commit 5ece196d28610afb88491e4795b3ab09d3c24929 Author: Yxq <2290299376@qq.com> Date: Wed Jul 23 17:30:14 2025 +0800 徐州宝开四向车 diff --git a/wms_client/.gitignore b/wms_client/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/wms_client/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/wms_client/README.md b/wms_client/README.md new file mode 100644 index 0000000..435cfb5 --- /dev/null +++ b/wms_client/README.md @@ -0,0 +1,24 @@ +# helloworld + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/wms_client/WMS-1.0.jar b/wms_client/WMS-1.0.jar new file mode 100644 index 0000000..e9bac48 Binary files /dev/null and b/wms_client/WMS-1.0.jar differ diff --git a/wms_client/babel.config.js b/wms_client/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/wms_client/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/wms_client/jsconfig.json b/wms_client/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/wms_client/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/wms_client/package-lock.json b/wms_client/package-lock.json new file mode 100644 index 0000000..90483d6 --- /dev/null +++ b/wms_client/package-lock.json @@ -0,0 +1,23809 @@ +{ + "name": "WMS", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "WMS", + "version": "0.1.0", + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "axios": "^1.3.3", + "core-js": "^3.8.3", + "element-plus": "^2.4.0", + "file-saver": "^2.0.5", + "moment": "^2.29.4", + "node-polyfill-webpack-plugin": "^2.0.1", + "qrcode": "^1.5.3", + "qrcode.vue": "^3.4.1", + "stream-http": "^3.2.0", + "vue": "^3.2.13", + "vue-print-nb": "^1.7.5", + "vue-router": "^4.0.3", + "vue3-print-nb": "^0.1.4", + "vuex": "^4.0.0", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "node-sass": "^8.0.0", + "sass-loader": "^13.2.0" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.6", + "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.6.tgz", + "integrity": "sha512-ULSIYPy4ZPM301dfCxRz0l2GJjOwIo/PqmWonIu1bLml7UmnVQmH+juJcoyXp6E8gIRRNAjGYftJnNQlfy4vPg==", + "dev": true, + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.20.5.tgz", + "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.6", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.5.tgz", + "integrity": "sha512-Lac7PpRJXcC3s9cKsBfl+uc+DYXU5FD06BrTFunQO6QIQT+DwyzDPURAowI3bcvD1dZF/ank1Z5rstUJn3Hn4Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", + "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz", + "integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.18.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.1.1.tgz", + "integrity": "sha512-PL7g3dhA4dHgZfujkuD8Q+tfJJynEtnNQSPzmucCnxMvkxf4cLBJw/ZYqZUn4HCh33U3WHrAfv2R2tbi9UCSmw==" + }, + "node_modules/@floating-ui/dom": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.1.1.tgz", + "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==", + "dependencies": { + "@floating-ui/core": "^1.1.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz", + "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.2.13" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-app/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "vue": "*" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz", + "integrity": "sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==", + "dev": true + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz", + "integrity": "sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz", + "integrity": "sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz", + "integrity": "sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-5.0.8.tgz", + "integrity": "sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", + "dev": true, + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "dependencies": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/@vue/devtools-api": { + "version": "6.4.5", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz", + "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==" + }, + "node_modules/@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "dependencies": { + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "dependencies": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "dependencies": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "dependencies": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + }, + "peerDependencies": { + "vue": "3.2.45" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.10.1", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz", + "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.12.0.tgz", + "integrity": "sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.12.0", + "@vueuse/shared": "9.12.0", + "vue-demi": "*" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.12.0.tgz", + "integrity": "sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==" + }, + "node_modules/@vueuse/shared": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.12.0.tgz", + "integrity": "sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==", + "dependencies": { + "vue-demi": "*" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/axios": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001434", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-css": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.1.tgz", + "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/core-js": { + "version": "3.26.1", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.26.1.tgz", + "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", + "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.7.2", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.2.tgz", + "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.18", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.14", + "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-5.1.14.tgz", + "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.13", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.13", + "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", + "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.3", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/element-plus": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz", + "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.18.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "peer": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "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" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "peer": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true, + "peer": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "peer": true + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globule": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "dependencies": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globule/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/joi": { + "version": "17.7.0", + "resolved": "https://registry.npmmirror.com/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "peer": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz", + "integrity": "sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA==", + "dev": true, + "dependencies": { + "launch-editor": "^2.6.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.12", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.1.tgz", + "integrity": "sha512-viOoaUFy+Z2w43VsGPbtfwFrr0tKwDctK9dUofG5MBViYhD1noGFUzzDIVw0KPwCGUP+c7zqLxm+acuQs7zLzw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minimist-options/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", + "dev": true + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "peer": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", + "dependencies": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.22.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^4.0.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "type-fest": "^2.14.0", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, + "node_modules/node-polyfill-webpack-plugin/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/node-polyfill-webpack-plugin/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "node_modules/node-sass": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-8.0.0.tgz", + "integrity": "sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + }, + "bin": { + "node-sass": "bin/node-sass" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/node-sass/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-sass/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-sass/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/node-sass/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/node-sass/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-sass/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-sass/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-sass/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-sass/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-sass/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-sass/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", + "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", + "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode.vue": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.4.1.tgz", + "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/qrcode/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redent/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass-graph": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + }, + "bin": { + "sassgraph": "bin/sassgraph" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/sass-graph/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/sass-graph/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/sass-graph/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/sass-loader": { + "version": "13.2.0", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.2.0.tgz", + "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/scss-tokenizer": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", + "dev": true, + "dependencies": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + } + }, + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stdout-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stdout-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stdout-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmmirror.com/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-4.0.1.tgz", + "integrity": "sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.16.0.tgz", + "integrity": "sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "peer": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/thread-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmmirror.com/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "peer": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/vue": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "17.0.1", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.0.1.tgz", + "integrity": "sha512-/OOyugJnImKCkAKrAvdsWMuwoCqGxWT5USLsjohzWbMgOwpA5wQmzQiLMzZd7DjhIfunzAGIApTOgIylz/kwcg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/vue-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/vue-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-print-nb": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/vue-print-nb/-/vue-print-nb-1.7.5.tgz", + "integrity": "sha512-iNbNyUVRWz0Ha1UTiCKxMPtHLUDGgNI8e8xmD3xqm9RlXIUeX9bT7DgNAfY8vPzqyFRHqGjxLI1rycKH366ziQ==", + "dependencies": { + "vue": "^2.6.11" + } + }, + "node_modules/vue-print-nb/node_modules/@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "dependencies": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "node_modules/vue-print-nb/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/vue-print-nb/node_modules/vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "dependencies": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-router": { + "version": "4.1.6", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz", + "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==", + "dependencies": { + "@vue/devtools-api": "^6.4.5" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/vue3-print-nb": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz", + "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==", + "dependencies": { + "vue": "^3.0.5" + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.75.0", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", + "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", + "dev": true, + "dependencies": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "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 + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "node_modules/webpack/node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + } + }, + "dependencies": { + "@achrinza/node-ipc": { + "version": "9.2.6", + "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.6.tgz", + "integrity": "sha512-ULSIYPy4ZPM301dfCxRz0l2GJjOwIo/PqmWonIu1bLml7UmnVQmH+juJcoyXp6E8gIRRNAjGYftJnNQlfy4vPg==", + "dev": true, + "requires": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + } + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", + "dev": true + }, + "@babel/core": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.20.5.tgz", + "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "dev": true, + "requires": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.6", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.5.tgz", + "integrity": "sha512-Lac7PpRJXcC3s9cKsBfl+uc+DYXU5FD06BrTFunQO6QIQT+DwyzDPURAowI3bcvD1dZF/ank1Z5rstUJn3Hn4Q==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.19.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", + "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.19.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", + "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.20.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.5", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@ctrl/tinycolor": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz", + "integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==" + }, + "@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "requires": {} + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.18.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "peer": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true + } + } + }, + "@floating-ui/core": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.1.1.tgz", + "integrity": "sha512-PL7g3dhA4dHgZfujkuD8Q+tfJJynEtnNQSPzmucCnxMvkxf4cLBJw/ZYqZUn4HCh33U3WHrAfv2R2tbi9UCSmw==" + }, + "@floating-ui/dom": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.1.1.tgz", + "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==", + "requires": { + "@floating-ui/core": "^1.1.0" + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "peer": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "peer": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "requires": { + "eslint-scope": "5.1.1" + } + }, + "@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "requires": { + "easy-stack": "1.0.1" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@popperjs/core": { + "version": "npm:@sxzz/popperjs-es@2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "18.11.9", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz", + "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz", + "integrity": "sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz", + "integrity": "sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==", + "dev": true, + "requires": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + } + }, + "@vue/cli-plugin-router": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz", + "integrity": "sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^5.0.8" + } + }, + "@vue/cli-plugin-vuex": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz", + "integrity": "sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==", + "dev": true, + "requires": {} + }, + "@vue/cli-service": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-5.0.8.tgz", + "integrity": "sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + } + }, + "@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", + "dev": true, + "requires": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "requires": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "@vue/devtools-api": { + "version": "6.4.5", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.4.5.tgz", + "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==" + }, + "@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "requires": { + "@vue/shared": "3.2.45" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "requires": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "requires": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "requires": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" + }, + "@vue/vue-loader-v15": { + "version": "npm:vue-loader@15.10.1", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz", + "integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + } + } + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "@vueuse/core": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.12.0.tgz", + "integrity": "sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==", + "requires": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.12.0", + "@vueuse/shared": "9.12.0", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.12.0.tgz", + "integrity": "sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==" + }, + "@vueuse/shared": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.12.0.tgz", + "integrity": "sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==", + "requires": { + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "address": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", + "dev": true + }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "peer": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "requires": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "peer": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "axios": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.3.3.tgz", + "integrity": "sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001434", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz", + "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clean-css": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.1.tgz", + "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "core-js": { + "version": "3.26.1", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.26.1.tgz", + "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" + }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-declaration-sorter": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", + "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "dev": true, + "requires": {} + }, + "css-loader": { + "version": "6.7.2", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.7.2.tgz", + "integrity": "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.18", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.14", + "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-5.1.14.tgz", + "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.13", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.13", + "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", + "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.3", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "peer": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==" + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "element-plus": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz", + "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==", + "requires": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmmirror.com/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "peer": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "peer": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "peer": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.18.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "peer": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "peer": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "peer": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "peer": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "peer": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "peer": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "peer": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "peer": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "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" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "peer": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "peer": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==" + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "peer": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true, + "peer": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "peer": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "globule": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "requires": { + "read-pkg-up": "^7.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.7.0", + "resolved": "https://registry.npmmirror.com/joi/-/joi-17.7.0.tgz", + "integrity": "sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "peer": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "launch-editor-middleware": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz", + "integrity": "sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA==", + "dev": true, + "requires": { + "launch-editor": "^2.6.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "requires": {} + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "peer": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "peer": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + } + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memfs": { + "version": "3.4.12", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.3" + } + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.1.tgz", + "integrity": "sha512-viOoaUFy+Z2w43VsGPbtfwFrr0tKwDctK9dUofG5MBViYhD1noGFUzzDIVw0KPwCGUP+c7zqLxm+acuQs7zLzw==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + } + } + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", + "dev": true + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "peer": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmmirror.com/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-polyfill-webpack-plugin": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz", + "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==", + "requires": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.22.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^4.0.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "type-fest": "^2.14.0", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "node-sass": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-8.0.0.tgz", + "integrity": "sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "make-fetch-happen": "^10.0.4", + "meow": "^9.0.0", + "nan": "^2.17.0", + "node-gyp": "^8.4.1", + "sass-graph": "^4.0.1", + "stdout-stream": "^1.4.0", + "true-case-path": "^2.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "peer": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.19", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.19.tgz", + "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + } + }, + "postcss-merge-rules": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", + "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", + "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "peer": true + }, + "prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "peer": true + }, + "progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "dependencies": { + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "qrcode.vue": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.4.1.tgz", + "integrity": "sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==", + "requires": {} + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + } + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "peer": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-graph": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.17.11", + "scss-tokenizer": "^0.4.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "sass-loader": { + "version": "13.2.0", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.2.0.tgz", + "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "scss-tokenizer": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", + "dev": true, + "requires": { + "js-base64": "^2.4.9", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + } + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "peer": true + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "peer": true + }, + "stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmmirror.com/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "peer": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "peer": true + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-4.0.1.tgz", + "integrity": "sha512-V9esFpNbK0arbN3fm2sxDKqMYgIp7XtVdE4Esj+PE4Qaaxdg1wIw48ITQIOn1sc8xXSmUviVL3cyjMqPlrVkiA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "terser": { + "version": "5.16.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.16.0.tgz", + "integrity": "sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg==", + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "peer": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "requires": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "peer": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + } + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmmirror.com/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "peer": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "vue": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "requires": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "17.0.1", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.0.1.tgz", + "integrity": "sha512-/OOyugJnImKCkAKrAvdsWMuwoCqGxWT5USLsjohzWbMgOwpA5wQmzQiLMzZd7DjhIfunzAGIApTOgIylz/kwcg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-print-nb": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/vue-print-nb/-/vue-print-nb-1.7.5.tgz", + "integrity": "sha512-iNbNyUVRWz0Ha1UTiCKxMPtHLUDGgNI8e8xmD3xqm9RlXIUeX9bT7DgNAfY8vPzqyFRHqGjxLI1rycKH366ziQ==", + "requires": { + "vue": "^2.6.11" + }, + "dependencies": { + "@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "requires": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + } + } + }, + "vue-router": { + "version": "4.1.6", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz", + "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==", + "requires": { + "@vue/devtools-api": "^6.4.5" + } + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + } + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vue3-print-nb": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz", + "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==", + "requires": { + "vue": "^3.0.5" + } + }, + "vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "webpack": { + "version": "5.75.0", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.7.0", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", + "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", + "dev": true, + "requires": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "peer": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } +} diff --git a/wms_client/package.json b/wms_client/package.json new file mode 100644 index 0000000..31f78bf --- /dev/null +++ b/wms_client/package.json @@ -0,0 +1,59 @@ +{ + "name": "WMS", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "axios": "^1.3.3", + "core-js": "^3.8.3", + "element-plus": "^2.4.0", + "file-saver": "^2.0.5", + "moment": "^2.29.4", + "node-polyfill-webpack-plugin": "^2.0.1", + "qrcode": "^1.5.3", + "qrcode.vue": "^3.4.1", + "stream-http": "^3.2.0", + "vue": "^3.2.13", + "vue-print-nb": "^1.7.5", + "vue-router": "^4.0.3", + "vue3-print-nb": "^0.1.4", + "vuex": "^4.0.0", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "node-sass": "^8.0.0", + "sass-loader": "^13.2.0" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/vue3-essential" + ], + "parserOptions": { + "parser": "@babel/eslint-parser" + }, + "rules": { + "no-unused-vars": "off" + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead", + "not ie 11" + ] +} diff --git a/wms_client/public/favicon.ico b/wms_client/public/favicon.ico new file mode 100644 index 0000000..61e13b4 Binary files /dev/null and b/wms_client/public/favicon.ico differ diff --git a/wms_client/public/index.html b/wms_client/public/index.html new file mode 100644 index 0000000..31e3fc6 --- /dev/null +++ b/wms_client/public/index.html @@ -0,0 +1,37 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + + diff --git a/wms_client/src/App.vue b/wms_client/src/App.vue new file mode 100644 index 0000000..e0eefab --- /dev/null +++ b/wms_client/src/App.vue @@ -0,0 +1,55 @@ + + + diff --git a/wms_client/src/api/config.js b/wms_client/src/api/config.js new file mode 100644 index 0000000..c7c823a --- /dev/null +++ b/wms_client/src/api/config.js @@ -0,0 +1,39 @@ +import request from "@/http/request"; + +const getConfigs = () => { + return request.get('/config/getConfigs') +} + +const updateConfig = (params) => { + return request.post('/config/updateConfig', params) +} + +const queryBoxConfig = (params) => { + return request.post('/config/queryBoxConfig', params) +} + +const queryBoxConfigByPage = (params) => { + return request.post('/config/queryBoxConfigByPage', params) +} + +const updateBoxConfig = (params) => { + return request.post('/config/updateBoxConfig', params) +} + +const addBoxConfig = (params) => { + return request.post('/config/addBoxConfig', params) +} + +const deleteBoxConfig = (params) => { + return request.post('/config/deleteBoxConfig', params) +} + +export { + getConfigs, + updateConfig, + queryBoxConfig, + queryBoxConfigByPage, + updateBoxConfig, + addBoxConfig, + deleteBoxConfig +} \ No newline at end of file diff --git a/wms_client/src/api/excel.js b/wms_client/src/api/excel.js new file mode 100644 index 0000000..9b2f662 --- /dev/null +++ b/wms_client/src/api/excel.js @@ -0,0 +1,183 @@ +import request from "@/http/request"; + +const downlocadExcel = () => { + return request.get('/test/testExcelExport', { + responseType: 'blob' + }) +} + +const uploadExcel = (formData) => { + return request({ + url: '/test/testExcelImport', + method: 'post', + data: formData, + timeout: 100000 + }) +} + +const uploadExcelPeijian = (data) => { + return request({ + url: '/excel/uploadExcelPeijian', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const uploadExcelHejian = (data) => { + return request({ + url: '/excel/uploadExcelHejian', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const uploadExcelJinji = (data) => { + return request({ + url: '/excel/uploadExcelJinji', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const uploadExcelKatePackage = (data) => { + return request({ + url: '/excel/uploadExcelKatePackage', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const uploadExcelParts = (data) => { + return request({ + url: '/excel/uploadPartInfos', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const uploadBoxConfig = (data) => { + return request({ + url: '/excel/uploadBoxConfig', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const distributePeijianTasks = (data) => { + return request({ + url: '/excel/distributePeijianTasks', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const distributeHejianTasks = (data) => { + return request({ + url: '/excel/distributeHejianTasks', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const distributeJinjiTasks = (data) => { + return request({ + url: '/excel/distributeJinjiTasks', + method: 'post', + data: data, + timeout: 100000 + }) +} + +const downloadStockExcel = () => { + return request({ + url: '/excel/downloadStockExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadKateTaskExcel = () => { + return request({ + url: '/excel/downloadKateTaskExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadPeijianExcel = () => { + return request({ + url: '/excel/downloadPeijianExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadRukuExcel = () => { + return request({ + url: '/excel/downloadRukuExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadHejianExcel = () => { + return request({ + url: '/excel/downloadHejianExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadJinjiExcel = () => { + return request({ + url: '/excel/downloadJinjiExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadPackageExcel = () => { + return request({ + url: '/excel/downloadPackageExcel', + method: 'get', + responseType: 'blob' + }) +} + +const downloadMaterialExcel = () => { + return request({ + url: '/excel/downloadMaterialExcel', + method: 'get', + responseType: 'blob' + }) +} + +export { + downlocadExcel, + uploadExcel, + uploadExcelPeijian, + uploadExcelHejian, + uploadExcelParts, + distributePeijianTasks, + distributeHejianTasks, + downloadStockExcel, + downloadKateTaskExcel, + uploadExcelJinji, + distributeJinjiTasks, + downloadPeijianExcel, + downloadRukuExcel, + downloadHejianExcel, + downloadJinjiExcel, + downloadPackageExcel, + uploadBoxConfig, + uploadExcelKatePackage, + downloadMaterialExcel +} \ No newline at end of file diff --git a/wms_client/src/api/goods.js b/wms_client/src/api/goods.js new file mode 100644 index 0000000..5ee2e95 --- /dev/null +++ b/wms_client/src/api/goods.js @@ -0,0 +1,66 @@ +import request from "@/http/request"; + +const getAllGoods = () => { + return request({ + url: '/goods/getAllGoods', + method: 'get' + }) +} + +const getPartInfo = (params) => { + return request({ + url: '/goods/getPartInfo', + method: 'post', + data: params + }) +} + +const updateGoodsInfo = (params) => { + return request({ + url: '/goods/updateGoodsInfo', + method: 'post', + data: params + }) +} + +const queryPartInfoByPartNo = (params) => { + return request({ + url: '/goods/queryPartInfoByPartNo', + method: 'post', + data: params + }) +} + +const updatePartInfo = (params) => { + return request({ + url: '/goods/updatePartInfo', + method: 'post', + data: params + }) +} + +const queryPartNo = (params) => { + return request({ + url: '/goods/queryPartNo', + method: 'post', + data: params + }) +} + +const deleteCurrentPartInfo = (params) => { + return request({ + url: '/goods/deletePartInfo', + method: 'post', + data: params + }) +} + +export { + getAllGoods, + updateGoodsInfo, + queryPartInfoByPartNo, + getPartInfo, + updatePartInfo, + queryPartNo, + deleteCurrentPartInfo +} \ No newline at end of file diff --git a/wms_client/src/api/location.js b/wms_client/src/api/location.js new file mode 100644 index 0000000..708522d --- /dev/null +++ b/wms_client/src/api/location.js @@ -0,0 +1,31 @@ +import request from "@/http/request"; + +const getLocations = (params) => { + return request({ + url: '/location/getLocations', + method: 'post', + data: params + }) +} + +const updateLocation = (params) => { + return request({ + url: '/location/updateLocation', + method: 'post', + data: params + }) +} + +const getAvailableLocations = (params) => { + return request({ + url: '/location/getAvailableLocations', + method: 'post', + data: params + }) +} + +export { + getLocations, + updateLocation, + getAvailableLocations +} \ No newline at end of file diff --git a/wms_client/src/api/login.js b/wms_client/src/api/login.js new file mode 100644 index 0000000..317af23 --- /dev/null +++ b/wms_client/src/api/login.js @@ -0,0 +1,31 @@ +import request from "@/http/request"; + +const loginWithoutAuth = (params) => { + return request({ + url: '/user/loginWithoutAuth', + method: 'post', + data: params + }) +} + +const loginWithAuth = (params) => { + return request({ + url: '/user/loginWithAuth', + method: 'post', + data: params + }) +} + +const getUser = (params) => { + return request({ + url: '/login/getUser', + method: 'post', + data: params + }) +} + +export { + loginWithoutAuth, + loginWithAuth, + getUser +} \ No newline at end of file diff --git a/wms_client/src/api/order.in.js b/wms_client/src/api/order.in.js new file mode 100644 index 0000000..f61a625 --- /dev/null +++ b/wms_client/src/api/order.in.js @@ -0,0 +1,61 @@ +import request from "@/http/request"; + +export default { + // 根据条件获取全部订单 + getOrderInList(params) { + return request.post('/api/orderIn/queryOrderIn', params) + }, + // 根据载具号查询 + getOrderInWithVehicleNo(vehicleNo) { + return request.get('/api/orderIn/getOrderInWithVehicleNo', { + params: { + vehicleNo: vehicleNo + } + }) + }, + //下发任务 + addOrderIn(params){ + return request.post('/api/orderIn/addOrderIn', params) + }, + // 绑定物料 + bindingVehicle(params) { + return request.post('/api/orderIn/bindingVehicle', params) + }, + //提交更新入库信息 + updateForNum(params){ + return request.post('/api/orderIn/updateForNum', params) + }, + // 解绑物料 + unbindingVehicle(rowId) { + return request.put('/api/orderIn/unBindingVehicle/' + rowId) + }, + + //删除订单 + deleteOrderIn(rowId) { + return request.delete('/api/orderIn/deleteOrderIn/' + rowId) + }, + + // 根据条件获取全部订单 + getOrderCheckList(params) { + return request.post('/api/orderCheck/queryOrderCheck',params) + }, + downInventoryTask(){ + return request.post('/api/orderCheck/downInventoryTask') + }, + // 删除订单 + deleteGoodsOrderInCheck(remarkReturn) { + return request.delete('/api/orderCheck/deleteCheckAll/' + remarkReturn) + }, + + //执行订单 + executeCheck(recordId){ + return request.put('/api/orderCheck/executeOrderCheck/' + recordId) + }, + + // 删除订单 + deleteCheckList(recordId) { + return request.delete('/api/orderCheck/deleteCheck/' + recordId) + }, + + +} \ No newline at end of file diff --git a/wms_client/src/api/order.out.js b/wms_client/src/api/order.out.js new file mode 100644 index 0000000..ec63767 --- /dev/null +++ b/wms_client/src/api/order.out.js @@ -0,0 +1,30 @@ +import request from "@/http/request"; + +export default { + // 根据条件获取全部订单 + getOrderOutList(params) { + return request.post('/api/orderOut/queryOrderOut', params) + }, + // 执行出库 + executeOut(rowId) { + return request.put('/api/orderOut/executeOrderOut/' + rowId) + }, + // 刪除按钮 + deleteOrder(rowId){ + return request.delete('/api/orderOut/deleteOrderOut/' + rowId) + }, + // 添加按钮 + addOrder(params){ + return request.post('/api/orderOut/addOrderOut', params) + }, + emptyAddOrder(params){ + return request.post('/api/orderOut/emptyAddOrderOut', params) + }, + addOrderByInsertEmpty(params){ + return request.post('/api/orderOut/addOrderByInsertEmpty', params) + }, + // // 库存页面执行出库 + // outRowStock(rowId){ + // return request.put('/api/orderOut/outRowStock/' + rowId) + // } +} \ No newline at end of file diff --git a/wms_client/src/api/record.js b/wms_client/src/api/record.js new file mode 100644 index 0000000..700a5ac --- /dev/null +++ b/wms_client/src/api/record.js @@ -0,0 +1,13 @@ +import request from "@/http/request"; + +const getTaskRecords = (params) => { + return request({ + url: '/record/getTaskRecords', + method: 'post', + data: params + }) +} + +export { + getTaskRecords +} \ No newline at end of file diff --git a/wms_client/src/api/stand.js b/wms_client/src/api/stand.js new file mode 100644 index 0000000..8669537 --- /dev/null +++ b/wms_client/src/api/stand.js @@ -0,0 +1,22 @@ +import request from "@/http/request"; + +const getAllStands = (params) => { + return request({ + url: '/stand/getAllStands', + method: 'post', + data: params + }) +} + +const updateStandInfo = (params) => { + return request({ + url: '/stand/updateStandInfo', + method: 'post', + data: params + }) +} + +export { + getAllStands, + updateStandInfo +} \ No newline at end of file diff --git a/wms_client/src/api/stock.js b/wms_client/src/api/stock.js new file mode 100644 index 0000000..cf38bb1 --- /dev/null +++ b/wms_client/src/api/stock.js @@ -0,0 +1,31 @@ +import request from "@/http/request"; + +const getAllStocks = (params) => { + return request({ + url: '/stock/getAllStocks', + method: 'post', + data: params + }) +} + +const getAllStocksByGoodsId = (params) => { + return request({ + url: '/stock/getAllStocksByGoodsId', + method: 'post', + data: params + }) +} + +const updateStockInfo = (params) => { + return request({ + url: '/stock/updateStockInfo', + method: 'post', + data: params + }) +} + +export { + getAllStocks, + updateStockInfo, + getAllStocksByGoodsId +} \ No newline at end of file diff --git a/wms_client/src/api/task.js b/wms_client/src/api/task.js new file mode 100644 index 0000000..de62195 --- /dev/null +++ b/wms_client/src/api/task.js @@ -0,0 +1,255 @@ +import request from "@/http/request"; + +const sendVehicleNo = (params) => { + return request({ + url: '/task/sendVehicleNo', + method: 'post', + data: params + }) +} + +const sendGoodsInTask = (params) => { + return request({ + url: '/task/sendGoodsInTask', + method: 'post', + data: params + }) +} + +const submitPackageTask = (params) => { + return request({ + url: '/taskOut/submitPackageTask', + method: 'post', + data: params + }) +} + +const sendGoodsOutTask = (params) => { + return request({ + url: '/task/sendGoodsOutTask', + method: 'post', + data: params + }) +} + +const getAllTasks = () => { + return request({ + url: '/task/getAllTasks', + method: 'get' + }) +} + +const sendInventoryTask = (params) => { + return request({ + url: '/task/sendInventoryTask', + method: 'post', + data: params + }) +} + +const finishInventoryTask = (params) => { + return request({ + url: '/task/finishInventoryTask', + method: 'post', + data: params + }) +} + +const getTasks = (params) => { + return request({ + url: '/task/getTasks', + method: 'post', + data: params + }) +} + +const getAllKateTasks = (params) => { + return request({ + url: '/task/getKateTasks', + method: 'post', + data: params + }) +} + +const getKateTasksByTask = (params) => { + return request({ + url: '/task/getKateTasksByTask', + method: 'post', + data: params + }) +} + +const finishPicking = (params) => { + return request({ + url: '/task/finishPicking', + method: 'post', + data: params + }) +} + +const finishCurrentKateTask = (params) => { + return request({ + url: '/task/finishCurrentKateTask', + method: 'post', + data: params + }) +} + +const getTaskByTask = (params) => { + return request({ + url: '/task/getTaskByTask', + method: 'post', + data: params + }) +} + +const getAllPeijians = (params) => { + return request({ + url: '/task/getAllPeijians', + method: 'post', + data: params + }) +} + +const getPeijians = (params) => { + return request({ + url: '/task/getPeijians', + method: 'post', + data: params + }) +} + +const getAllHejians = (params) => { + return request({ + url: '/task/getAllHejians', + method: 'post', + data: params + }) +} + +const getHejians = (params) => { + return request({ + url: '/task/getHejians', + method: 'post', + data: params + }) +} + +const getAllJinjis = (params) => { + return request({ + url: '/task/getAllJinjis', + method: 'post', + data: params + }) +} + +const getJinjis = (params) => { + return request({ + url: '/task/getJinjis', + method: 'post', + data: params + }) +} + +const getAllPackages = (params) => { + return request({ + url: '/task/getAllPackages', + method: 'post', + data: params + }) +} + +const getPackages = (params) => { + return request({ + url: '/task/getPackages', + method: 'post', + data: params + }) +} + +const getPrintData = (params) => { + return request({ + url: '/task/getPrintData', + method: 'post', + data: params + }) +} + +const redistributeLackKateTask = (params) =>{ + return request({ + url: '/task/redistributeLackKateTask', + method: 'post', + data: params + }) +} + +const callEmptyVehicle = (params) => { + return request({ + url: '/taskOut/callEmptyVehicle', + method: 'post', + data: params + }) +} + +const changeTaskStatus = (params) => { + return request({ + url: '/taskDeal/changeTaskStatus', + method: 'post', + data: params + }) +} + +const deleteAllKateTasks = (params) => { + return request({ + url: '/taskDeal/deleteAllKateTasks', + method: 'post', + data: params + }) +} + +const sendBoxArrive = (params) => { + return request({ + url: '/task/boxArrive', + method: 'post', + data: params + }) +} + +const selectVehicleOut = (params) => { + return request({ + url: '/task/vehicleOut', + method: 'post', + data: params + }) +} + +export { + sendVehicleNo, + sendGoodsInTask, + sendGoodsOutTask, + getAllTasks, + sendInventoryTask, + finishInventoryTask, + getTasks, + getAllKateTasks, + getKateTasksByTask, + finishPicking, + finishCurrentKateTask, + getTaskByTask, + getAllPeijians, + getAllHejians, + getPrintData, + redistributeLackKateTask, + getPeijians, + getHejians, + getJinjis, + getAllJinjis, + getAllPackages, + getPackages, + callEmptyVehicle, + changeTaskStatus, + deleteAllKateTasks, + submitPackageTask, + sendBoxArrive, + selectVehicleOut +} \ No newline at end of file diff --git a/wms_client/src/api/user.js b/wms_client/src/api/user.js new file mode 100644 index 0000000..60ade8c --- /dev/null +++ b/wms_client/src/api/user.js @@ -0,0 +1,59 @@ +import request from "@/http/request"; + +// 登录方法 +export function login(username, password, code, uuid) { + const data = { + username, + password, + code, + uuid + } + return request({ + url: '/login', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 注册方法 +export function register(data) { + return request({ + url: '/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + url: '/getInfo', + method: 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + url: '/logout', + method: 'post' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + url: '/captchaImage', + headers: { + isToken: false + }, + method: 'get', + timeout: 20000 + }) +} \ No newline at end of file diff --git a/wms_client/src/api/vehicle.js b/wms_client/src/api/vehicle.js new file mode 100644 index 0000000..2ffe9f6 --- /dev/null +++ b/wms_client/src/api/vehicle.js @@ -0,0 +1,31 @@ +import request from "@/http/request"; + +const getAllVehicles = (params) => { + return request({ + url: '/location/getVehicles', + method: 'post', + data: params + }) +} + +const updateVehicleInfo = (params) => { + return request({ + url: '/location/updateVehicleInfo', + method: 'post', + data: params + }) +} + +const deleteCurrentVehicle = (params) => { + return request({ + url: '/location/deleteVehicle', + method: 'post', + data: params + }) +} + +export { + getAllVehicles, + updateVehicleInfo, + deleteCurrentVehicle +} \ No newline at end of file diff --git a/wms_client/src/assets/fdbk_log.png b/wms_client/src/assets/fdbk_log.png new file mode 100644 index 0000000..61e13b4 Binary files /dev/null and b/wms_client/src/assets/fdbk_log.png differ diff --git a/wms_client/src/assets/logo.png b/wms_client/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/wms_client/src/assets/logo.png differ diff --git a/wms_client/src/components/BindingGoods.vue b/wms_client/src/components/BindingGoods.vue new file mode 100644 index 0000000..bbc771d --- /dev/null +++ b/wms_client/src/components/BindingGoods.vue @@ -0,0 +1,258 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/components/appTag.vue b/wms_client/src/components/appTag.vue new file mode 100644 index 0000000..6ed2aa1 --- /dev/null +++ b/wms_client/src/components/appTag.vue @@ -0,0 +1,71 @@ +// AppTag组件 + + + + diff --git a/wms_client/src/components/downPanDian.vue b/wms_client/src/components/downPanDian.vue new file mode 100644 index 0000000..8deb26a --- /dev/null +++ b/wms_client/src/components/downPanDian.vue @@ -0,0 +1,222 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/components/emptyHandOut.vue b/wms_client/src/components/emptyHandOut.vue new file mode 100644 index 0000000..6842970 --- /dev/null +++ b/wms_client/src/components/emptyHandOut.vue @@ -0,0 +1,225 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/components/handOut.vue b/wms_client/src/components/handOut.vue new file mode 100644 index 0000000..083b725 --- /dev/null +++ b/wms_client/src/components/handOut.vue @@ -0,0 +1,230 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/components/inserthandOut.vue b/wms_client/src/components/inserthandOut.vue new file mode 100644 index 0000000..9131240 --- /dev/null +++ b/wms_client/src/components/inserthandOut.vue @@ -0,0 +1,229 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/components/sideMenu.vue b/wms_client/src/components/sideMenu.vue new file mode 100644 index 0000000..3680289 --- /dev/null +++ b/wms_client/src/components/sideMenu.vue @@ -0,0 +1,58 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/demo/excelDemo.vue b/wms_client/src/demo/excelDemo.vue new file mode 100644 index 0000000..ff52e8c --- /dev/null +++ b/wms_client/src/demo/excelDemo.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/wms_client/src/enum/order.in.enum.js b/wms_client/src/enum/order.in.enum.js new file mode 100644 index 0000000..b2751fe --- /dev/null +++ b/wms_client/src/enum/order.in.enum.js @@ -0,0 +1,39 @@ + +// 入库单状态 +export const orderInEnum = { + creat: { + value: 0, + label: '待入库', + color: 'info' + }, + running: { + value: 1, + label: '正在入库', + color: 'primary' + }, + finish: { + value: 2, + label: '绑定成功', + color: 'success' + }, + error: { + value: 9, + label: '执行异常', + color: 'danger' + } +} + +export function formatterOrderInEnum(value) { + switch (parseInt(value)){ + case orderInEnum.creat.value: + return {label: orderInEnum.creat.label, type: orderInEnum.creat.color}; + case orderInEnum.running.value: + return {label: orderInEnum.running.label, type: orderInEnum.running.color}; + case orderInEnum.finish.value: + return {label: orderInEnum.finish.label, type: orderInEnum.finish.color}; + case orderInEnum.error.value: + return {label: orderInEnum.error.label, type: orderInEnum.error.color}; + default: + return {label: `未知类型:${value}`, type: 'danger'}; + } +} \ No newline at end of file diff --git a/wms_client/src/enum/order.out.enum.js b/wms_client/src/enum/order.out.enum.js new file mode 100644 index 0000000..e7b61c6 --- /dev/null +++ b/wms_client/src/enum/order.out.enum.js @@ -0,0 +1,32 @@ + +// 出库单状态 +export const orderOutEnum = { + creat: { + value: 0, + label: '待出库', + color: 'info' + }, + running: { + value: 1, + label: '出库中', + color: 'primary' + }, + error: { + value: 9, + label: '执行异常', + color: 'danger' + } +} + +export function formatterOrderOutEnum(value) { + switch (parseInt(value)){ + case orderOutEnum.creat.value: + return {label: orderOutEnum.creat.label, type: orderOutEnum.creat.color}; + case orderOutEnum.running.value: + return {label: orderOutEnum.running.label, type: orderOutEnum.running.color}; + case orderOutEnum.error.value: + return {label: orderOutEnum.error.label, type: orderOutEnum.error.color}; + default: + return {label: `未知类型:${value}`, type: 'danger'}; + } +} \ No newline at end of file diff --git a/wms_client/src/excel/UploadExcelPart.vue b/wms_client/src/excel/UploadExcelPart.vue new file mode 100644 index 0000000..12dfc3f --- /dev/null +++ b/wms_client/src/excel/UploadExcelPart.vue @@ -0,0 +1,58 @@ + + + \ No newline at end of file diff --git a/wms_client/src/http/request.js b/wms_client/src/http/request.js new file mode 100644 index 0000000..d89b7d8 --- /dev/null +++ b/wms_client/src/http/request.js @@ -0,0 +1,46 @@ +import axios from 'axios' +//192.168.16.116 +const request = axios.create({ + baseURL: 'http://localhost:19990/wms', + timeout: 5000 +}) + +// axios.defaults.baseURL = 'http://192.168.103.202:12315/wms' +// axios.defaults.baseURL = 'http://localhost:12315/wms' +// axios.defaults.baseURL = 'http://192.168.8.21:12315/wms' + +// // request 请求器 +// // 可以自请求发送前对请求做一些处理 +// // 比如统一加token,对请求参数统一加密 +// request.interceptors.request.use(config => { +// if (config && config.headers) { +// config.headers['Content-Type'] = 'application/json;charset=utf-8'; +// } +// // config.headers['token'] = user.token; // 设置请求头 +// return config +// }, error => { +// return Promise.reject(error) +// }); + +// // response 拦截器 +// // 可以在接口响应后统一处理结果 +// request.interceptors.response.use( +// response => { +// let res = response.data; +// // 如果是返回的文件 +// if (response.config.responseType === 'blob') { +// return res +// } +// // 兼容服务端返回的字符串数据 +// if (typeof res === 'string') { +// res = res ? JSON.parse(res) : res +// } +// return res; +// }, +// error => { +// console.log('err' + error) // for debug +// return Promise.reject(error) +// } +// ) + +export default request \ No newline at end of file diff --git a/wms_client/src/layout/boxConfig.vue b/wms_client/src/layout/boxConfig.vue new file mode 100644 index 0000000..23944a4 --- /dev/null +++ b/wms_client/src/layout/boxConfig.vue @@ -0,0 +1,311 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/config.vue b/wms_client/src/layout/config.vue new file mode 100644 index 0000000..132a0b1 --- /dev/null +++ b/wms_client/src/layout/config.vue @@ -0,0 +1,145 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/goods.vue b/wms_client/src/layout/goods.vue new file mode 100644 index 0000000..32cbeee --- /dev/null +++ b/wms_client/src/layout/goods.vue @@ -0,0 +1,363 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/goodsIn.vue b/wms_client/src/layout/goodsIn.vue new file mode 100644 index 0000000..1aeca9c --- /dev/null +++ b/wms_client/src/layout/goodsIn.vue @@ -0,0 +1,293 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/goodsInForPDA.vue b/wms_client/src/layout/goodsInForPDA.vue new file mode 100644 index 0000000..1d2b525 --- /dev/null +++ b/wms_client/src/layout/goodsInForPDA.vue @@ -0,0 +1,407 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/goodsOut.vue b/wms_client/src/layout/goodsOut.vue new file mode 100644 index 0000000..106f26e --- /dev/null +++ b/wms_client/src/layout/goodsOut.vue @@ -0,0 +1,216 @@ + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/inTaskRecord.vue b/wms_client/src/layout/inTaskRecord.vue new file mode 100644 index 0000000..e98f47e --- /dev/null +++ b/wms_client/src/layout/inTaskRecord.vue @@ -0,0 +1,178 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/inventory.vue b/wms_client/src/layout/inventory.vue new file mode 100644 index 0000000..ca125c2 --- /dev/null +++ b/wms_client/src/layout/inventory.vue @@ -0,0 +1,259 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/inventoryRecord.vue b/wms_client/src/layout/inventoryRecord.vue new file mode 100644 index 0000000..4e6f838 --- /dev/null +++ b/wms_client/src/layout/inventoryRecord.vue @@ -0,0 +1,150 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/location.vue b/wms_client/src/layout/location.vue new file mode 100644 index 0000000..9c9b7f6 --- /dev/null +++ b/wms_client/src/layout/location.vue @@ -0,0 +1,205 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/outTaskRecord.vue b/wms_client/src/layout/outTaskRecord.vue new file mode 100644 index 0000000..f0a76ce --- /dev/null +++ b/wms_client/src/layout/outTaskRecord.vue @@ -0,0 +1,150 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/standSettings.vue b/wms_client/src/layout/standSettings.vue new file mode 100644 index 0000000..eab025d --- /dev/null +++ b/wms_client/src/layout/standSettings.vue @@ -0,0 +1,260 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/stock.vue b/wms_client/src/layout/stock.vue new file mode 100644 index 0000000..9b59d4c --- /dev/null +++ b/wms_client/src/layout/stock.vue @@ -0,0 +1,457 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/taskMonitor.vue b/wms_client/src/layout/taskMonitor.vue new file mode 100644 index 0000000..0f57957 --- /dev/null +++ b/wms_client/src/layout/taskMonitor.vue @@ -0,0 +1,326 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/layout/vehicle.vue b/wms_client/src/layout/vehicle.vue new file mode 100644 index 0000000..b9eae4c --- /dev/null +++ b/wms_client/src/layout/vehicle.vue @@ -0,0 +1,265 @@ + + + + + + \ No newline at end of file diff --git a/wms_client/src/main.js b/wms_client/src/main.js new file mode 100644 index 0000000..1db3a83 --- /dev/null +++ b/wms_client/src/main.js @@ -0,0 +1,19 @@ +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import store from './store' +import './styles/index.scss' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import print from 'vue3-print-nb' + +const app = createApp(App) +app.use(store) +app.use(router) +app.use(ElementPlus) +app.use(print) +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} +app.mount('#app') \ No newline at end of file diff --git a/wms_client/src/print/printDemo.vue b/wms_client/src/print/printDemo.vue new file mode 100644 index 0000000..e4a04a9 --- /dev/null +++ b/wms_client/src/print/printDemo.vue @@ -0,0 +1,85 @@ + + + + + + + \ No newline at end of file diff --git a/wms_client/src/router/index.js b/wms_client/src/router/index.js new file mode 100644 index 0000000..48b0039 --- /dev/null +++ b/wms_client/src/router/index.js @@ -0,0 +1,62 @@ +import { createRouter, createWebHashHistory } from 'vue-router' +import HomeView from '@/views/HomeView.vue' +import stock from '@/layout/stock.vue' +import login from '@/views/login.vue' +import systemCenter from'@/views/SystemCenter.vue' +import goodsInPda from '@/layout/goodsInForPDA.vue' + +const routes = [ + { + path: '/home', + name: 'home', + component: HomeView, + redirect: '/stock', + children: [ + { path: '/stock', component: stock },// 库存 + { path: '/goodsIn', component: () => import('@/layout/goodsIn.vue') },// 入库 + { path: '/goodsOut', component: () => import('@/layout/goodsOut.vue') },// 出库 + { path: '/inTaskRecord', component: () => import('@/layout/inTaskRecord.vue') },// 入库记录 + { path: '/outTaskRecord', component: () => import('@/layout/outTaskRecord.vue') },// 出库记录 + { path: '/location', component: () => import('@/layout/location.vue') },// 库位 + { path: '/goods', component: () => import('@/layout/goods.vue') },// 物料 + { path: '/standSettings', component: () => import('@/layout/standSettings.vue') },// 站台(库口)设置 + { path: '/config', component: () => import('@/layout/config.vue') },// 系统配置 + { path: '/taskMonitor', component: () => import('@/layout/taskMonitor.vue') },// 任务监控 + { path: '/inventory', component: () => import('@/layout/inventory.vue') },// 盘点 + { path: '/inventoryRecord', component: () => import('@/layout/inventoryRecord.vue') },// 盘点 + { path: '/vehicle', component: () => import('@/layout/vehicle.vue') },// 料箱 + ] + }, + { + path: '/', + name: 'login', + component: login + }, + { + path: '/systemCenter', + name: 'systemCenter', + component: systemCenter + }, + { + path: '/goodsInPda', + name: 'goodsInPda', + component: goodsInPda + }, +] + +const router = createRouter({ + base: '/', + history: createWebHashHistory(), + routes +}) + +// 挂载路由导航守卫 +router.beforeEach((to, from, next) => { + if (to.path === '/') return next() + // 获取token + const user = sessionStorage.getItem('user') + if (!user) return next('/') + next() +}) + +export default router diff --git a/wms_client/src/store/index.js b/wms_client/src/store/index.js new file mode 100644 index 0000000..4768b43 --- /dev/null +++ b/wms_client/src/store/index.js @@ -0,0 +1,82 @@ +import { createStore } from 'vuex' + +export default createStore({ + state: { + stateTagsList: [{ + id: '21', + labelName: '库存', + path: '/stock' + }], + user: {}, + menuList: [], + token: '', + verifier: '' + }, + getters: { + getUserName(state) { + return state.user.userName + }, + getMenuList(state) { + return state.menuList + }, + getToken(state) { + return state.token + }, + getVerify(state) { + return state.verifier + }, + }, + mutations: { + /** + * 选择tag标签 + */ + mutationSelectTags(state, data) { + let result = false + for (let i = 0; i < state.stateTagsList.length; i++) { + if (state.stateTagsList[i].path == data.path) { + return result = true + } + } + result === false ? state.stateTagsList.push(data) : '' + }, + + /** + * 关闭tag标签 + */ + mutationCloseTag(state, data) { + let result = state.stateTagsList.findIndex(item => item.path === data.path) + state.stateTagsList.splice(result, 1) + }, + + /** + * 存储用户信息 + */ + mutationUser(state, data) { + state.user = data + sessionStorage.setItem("user", state.user) + }, + + /** + * 存储菜单信息 + */ + mutationMenu(state, data) { + state.menuList = data + sessionStorage.setItem("menuList", state.menuList) + }, + + /** + * 存储认证 + */ + mutationAddVerify(state, data) { + state.verifier = data + }, + + mutationClearVerify(state) { + state.verifier = '' + }, + }, + actions: { + }, + modules: { + } +}) diff --git a/wms_client/src/styles/index.scss b/wms_client/src/styles/index.scss new file mode 100644 index 0000000..48a6b83 --- /dev/null +++ b/wms_client/src/styles/index.scss @@ -0,0 +1,9 @@ +/* 只需要重写你需要的即可 */ +@forward 'element-plus/theme-chalk/src/common/var.scss' with ($colors: ('primary': ('base': green, + ), + ), +); + +// 如果只是按需导入,则可以忽略以下内容。 +// 如果你想导入所有样式: +// @use "element-plus/theme-chalk/src/index.scss" as *; \ No newline at end of file diff --git a/wms_client/src/utils/dateUtils.js b/wms_client/src/utils/dateUtils.js new file mode 100644 index 0000000..3a81f4e --- /dev/null +++ b/wms_client/src/utils/dateUtils.js @@ -0,0 +1,23 @@ +function revertSeconds(originSeconds) { + const dayRule = 60*60*24 + const hourRule = 60*60 + const days = Math.floor(originSeconds/dayRule) + const hours = Math.floor((originSeconds%dayRule)/hourRule) + const minutes = Math.floor((originSeconds%hourRule)/60) + const seconds = originSeconds%60 + var dueTime = '' + if (days > 0) { + dueTime = dueTime.concat(days).concat('天') + } + if (hours > 0) { + dueTime = dueTime.concat(hours).concat('小时') + } + if (minutes > 0) { + dueTime = dueTime.concat(minutes).concat('分') + } + return dueTime.concat(seconds).concat('秒') +} + +export { + revertSeconds +} \ No newline at end of file diff --git a/wms_client/src/utils/formatter.js b/wms_client/src/utils/formatter.js new file mode 100644 index 0000000..5881753 --- /dev/null +++ b/wms_client/src/utils/formatter.js @@ -0,0 +1,153 @@ +import moment from "moment"; +import { revertSeconds } from '@/utils/dateUtils' + +function timeFormatter(date) { + if (date === null || date === undefined) { + return '' + } + return moment(date).format('yyyy-MM-DD HH:mm:ss'); +} +function formatCellValueTime(row, column, cellValue) { + if (cellValue === null || cellValue === '') { + return '' + } + try { + return moment(cellValue).format('yyyy-MM-DD HH:mm:ss') + }catch { + return cellValue + } +} + +function dateFormatter(date) { + if (date === null || date === undefined) { + return '' + } + return moment(date).format('yyyy-MM-DD'); +} + +function dueFormatter(date) { + if (date === null || date === undefined) { + return '' + } + return revertSeconds(moment(new Date().getTime()).diff(moment(date), 'seconds')); +} + +function taskStatusFormatter(value) { + switch (value) { + case 0: + return '任务新建,待下发' + case 1: + return '任务已下发' + case 2: + return '任务开始执行' + case 3: + return '出库完成' + case 4: + return '输送线转运中' + case 5: + return '到达拣选站台' + case 6: + return '正在拣货' + case 7: + return '正在回库' + case 8: + return '盘点中' + case 100: + return '任务完成' + case 998: + return '任务取消' + case 999: + return '任务异常' + default: + return '未完成' + } +} + +function locationFormatter(locationId) { + if (locationId === null || locationId == undefined) { + return '' + } + const parts = locationId.split('-'); + if (parts.length === 4) { + return parts[0] + '排' + parts[1] + '列' + parts[2] + '层' + parts[3] + '深'; + } else if (parts.length === 3) { + return parts[0] + '排' + parts[1] + '列' + parts[2] + '层'; + } else { + return '格式错误'; + } + // const parts = locationId.split('-'); + // return parts[0] + '排' + parts[1] + '列' + parts[2] + '层' + parts[3] + '深度'; + //return locationId.substr(0, 2) + '排' + locationId.substr(2, 2) + '列' + locationId.substr(4, 2) + '层' +} + +function kateTaskStatusFormatter(value) { + switch (value) { + case 0: + return '待下发' + case 1: + return '已下发' + case 2: + return '执行中' + case 3: + return '正在拣货' + case 5: + return '任务完成' + default: + return '异常状态' + } +} + +function pickingStatusFormatter(value) { + switch (value) { + case 0: + return '待拣货' + case 1: + return '正在拣货' + case 2: + return '拣货完成' + default: + return '未拣货' + } +} + +function vehicleStatusFormatter(value) { + switch (value) { + case 1: + return '入库中' + case 2: + return '在库中' + case 3: + return '出库中' + default: + return '异常状态' + } +} + +function kateTaskTypeFormatter(value) { + switch (value) { + case 1: + return '配件' + case 2: + return '合件' + case 3: + return '紧急' + case 4: + return '原包装' + default: + return '任务类型异常' + } +} + + +export { + timeFormatter, + dateFormatter, + taskStatusFormatter, + locationFormatter, + kateTaskStatusFormatter, + pickingStatusFormatter, + vehicleStatusFormatter, + kateTaskTypeFormatter, + dueFormatter, + formatCellValueTime +} \ No newline at end of file diff --git a/wms_client/src/utils/loading.js b/wms_client/src/utils/loading.js new file mode 100644 index 0000000..e3ada52 --- /dev/null +++ b/wms_client/src/utils/loading.js @@ -0,0 +1,9 @@ +import { ElLoading } from 'element-plus' + +const loading = ElLoading.service({ + lock: true, + text: 'Loading', + background: 'rgba(0, 0, 0, 0.7)', +}) + +export default loading \ No newline at end of file diff --git a/wms_client/src/utils/request.js b/wms_client/src/utils/request.js new file mode 100644 index 0000000..8f60073 --- /dev/null +++ b/wms_client/src/utils/request.js @@ -0,0 +1,146 @@ +import axios from 'axios' +import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus' +import { getToken } from '@/utils/auth' +import errorCode from '@/utils/errorCode' +import { tansParams, blobValidate } from '@/utils/ruoyi' +import cache from '@/plugins/cache' +import { saveAs } from 'file-saver' +import useUserStore from '@/store/modules/user' + +let downloadLoadingInstance; +// 是否显示重新登录 +export let isRelogin = { show: false }; + +axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' +// 创建axios实例 +const service = axios.create({ + // axios中请求配置有baseURL选项,表示请求URL公共部分 + baseURL: import.meta.env.VITE_APP_BASE_API, + // 超时 + timeout: 10000 +}) + +// request拦截器 +service.interceptors.request.use(config => { + // 是否需要设置 token + const isToken = (config.headers || {}).isToken === false + // 是否需要防止数据重复提交 + const isRepeatSubmit = (config.headers || {}).repeatSubmit === false + if (getToken() && !isToken) { + config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + } + // get请求映射params参数 + if (config.method === 'get' && config.params) { + let url = config.url + '?' + tansParams(config.params); + url = url.slice(0, -1); + config.params = {}; + config.url = url; + } + if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { + const requestObj = { + url: config.url, + data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, + time: new Date().getTime() + } + const sessionObj = cache.session.getJSON('sessionObj') + if (sessionObj === undefined || sessionObj === null || sessionObj === '') { + cache.session.setJSON('sessionObj', requestObj) + } else { + const s_url = sessionObj.url; // 请求地址 + const s_data = sessionObj.data; // 请求数据 + const s_time = sessionObj.time; // 请求时间 + const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 + if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { + const message = '数据正在处理,请勿重复提交'; + console.warn(`[${s_url}]: ` + message) + return Promise.reject(new Error(message)) + } else { + cache.session.setJSON('sessionObj', requestObj) + } + } + } + return config +}, error => { + console.log(error) + Promise.reject(error) +}) + +// 响应拦截器 +service.interceptors.response.use(res => { + // 未设置状态码则默认成功状态 + const code = res.data.code || 200; + // 获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode['default'] + // 二进制数据则直接返回 + if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { + return res.data + } + if (code === 401) { + if (!isRelogin.show) { + isRelogin.show = true; + ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { + isRelogin.show = false; + useUserStore().logOut().then(() => { + location.href = '/index'; + }) + }).catch(() => { + isRelogin.show = false; + }); + } + return Promise.reject('无效的会话,或者会话已过期,请重新登录。') + } else if (code === 500) { + ElMessage({ message: msg, type: 'error' }) + return Promise.reject(new Error(msg)) + } else if (code === 601) { + ElMessage({ message: msg, type: 'warning' }) + return Promise.reject(new Error(msg)) + } else if (code !== 200) { + ElNotification.error({ title: msg }) + return Promise.reject('error') + } else { + return Promise.resolve(res.data) + } +}, + error => { + console.log('err' + error) + let { message } = error; + if (message == "Network Error") { + message = "后端接口连接异常"; + } else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } else if (message.includes("Request failed with status code")) { + message = "系统接口" + message.substr(message.length - 3) + "异常"; + } + ElMessage({ message: message, type: 'error', duration: 5 * 1000 }) + return Promise.reject(error) + } +) + +// 通用下载方法 +export function download(url, params, filename, config) { + downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", }) + return service.post(url, params, { + transformRequest: [(params) => { return tansParams(params) }], + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + responseType: 'blob', + ...config + }).then(async (data) => { + const isLogin = await blobValidate(data); + if (isLogin) { + const blob = new Blob([data]) + saveAs(blob, filename) + } else { + const resText = await data.text(); + const rspObj = JSON.parse(resText); + const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] + ElMessage.error(errMsg); + } + downloadLoadingInstance.close(); + }).catch((r) => { + console.error(r) + ElMessage.error('下载文件出现错误,请联系管理员!') + downloadLoadingInstance.close(); + }) +} + +export default service diff --git a/wms_client/src/views/HomeView.vue b/wms_client/src/views/HomeView.vue new file mode 100644 index 0000000..ba910a7 --- /dev/null +++ b/wms_client/src/views/HomeView.vue @@ -0,0 +1,165 @@ + + + + + + + diff --git a/wms_client/src/views/SystemCenter.vue b/wms_client/src/views/SystemCenter.vue new file mode 100644 index 0000000..1049b27 --- /dev/null +++ b/wms_client/src/views/SystemCenter.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/wms_client/src/views/login.vue b/wms_client/src/views/login.vue new file mode 100644 index 0000000..4e6a0bf --- /dev/null +++ b/wms_client/src/views/login.vue @@ -0,0 +1,83 @@ + + + + + \ No newline at end of file diff --git a/wms_client/vue.config.js b/wms_client/vue.config.js new file mode 100644 index 0000000..80d94bf --- /dev/null +++ b/wms_client/vue.config.js @@ -0,0 +1,20 @@ +const { defineConfig } = require('@vue/cli-service') +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = defineConfig({ + transpileDependencies: true, + configureWebpack: { + plugins: [new NodePolyfillPlugin()] + }, + devServer: { + port: 12306, // 端口 + proxy: { + '/authorize': { // 若请求的前缀不是这个'/wms',那请求就不会走代理服务器 + target: "https://login.microsoftonline.com/caterpillar.onmicrosoft.com/", //这里写路径 + pathRewrite: { '^/authorize': '' }, //将所有含/wms路径的,去掉/wms转发给服务器 + ws: true, //用于支持websocket + changeOrigin: true //用于控制请求头中的host值 + }, + } + }, +}) \ No newline at end of file diff --git a/wms_client/wms_client.zip b/wms_client/wms_client.zip new file mode 100644 index 0000000..f8fc43d Binary files /dev/null and b/wms_client/wms_client.zip differ diff --git a/wms_fdbk_xuzhou.sql b/wms_fdbk_xuzhou.sql new file mode 100644 index 0000000..0fb8f8d --- /dev/null +++ b/wms_fdbk_xuzhou.sql @@ -0,0 +1,1081 @@ +/* + Navicat Premium Data Transfer + + Source Server : mydatabase + Source Server Type : MySQL + Source Server Version : 80036 + Source Host : localhost:3306 + Source Schema : wms_fdbk_xuzhou + + Target Server Type : MySQL + Target Server Version : 80036 + File Encoding : 65001 + + Date: 23/07/2025 17:20:39 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for tbl_app_goods +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_goods`; +CREATE TABLE `tbl_app_goods` ( + `goods_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '物料编号', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `goods_unit` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位', + `item_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料id', + `item_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料类别', + `inv_category` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库存类别', + `life_days` int NULL DEFAULT NULL COMMENT '存储天数', + `organization_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库存组织id', + `organization_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库存组织代码', + `last_update_time` datetime NULL DEFAULT NULL COMMENT '最后更新时间', + `last_update_user` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后更新用户', + PRIMARY KEY (`goods_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_goods +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_app_location +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_location`; +CREATE TABLE `tbl_app_location` ( + `location_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '库位编号', + `area_id` int NULL DEFAULT NULL COMMENT '区域编号', + `tunnel_id` int NULL DEFAULT NULL COMMENT '巷道编号', + `equipment_id` int NULL DEFAULT NULL COMMENT '设备编号', + `location_type` int NULL DEFAULT NULL COMMENT '库位类型', + `queue` int NULL DEFAULT NULL COMMENT '排', + `line` int NULL DEFAULT NULL COMMENT '列', + `layer` int NULL DEFAULT NULL COMMENT '层', + `depth` int NULL DEFAULT NULL COMMENT '深度', + `is_lock` int NULL DEFAULT NULL COMMENT '库位是否锁定(0:未锁定,1:锁定)', + `location_status` int NULL DEFAULT NULL COMMENT '库位状态(0:空闲,1:占用)', + `vehicle_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '载具编号', + `ware_area` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库区', + PRIMARY KEY (`location_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_location +-- ---------------------------- +INSERT INTO `tbl_app_location` VALUES ('A11-15-1', 2, 1, 2, 0, 1, 11, 1, 1, 1, 0, '', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A11-15-2', 2, 1, 2, 0, 1, 11, 2, 1, 0, 1, 'B0000039', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A11-15-3', 2, 1, 2, 0, 1, 11, 3, 1, 0, 1, 'B0000003', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A11-15-4', 2, 1, 2, 0, 1, 11, 4, 1, 0, 1, 'B0000048', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A11-15-5', 2, 1, 2, 0, 1, 11, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A12-15-1', 2, 1, 2, 0, 1, 12, 1, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A12-15-2', 2, 1, 2, 0, 1, 12, 2, 1, 0, 1, 'B0000012', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A12-15-3', 2, 1, 2, 0, 1, 12, 3, 1, 0, 1, 'B0000027', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A12-15-4', 2, 1, 2, 0, 1, 12, 4, 1, 0, 1, 'B0000044', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A12-15-5', 2, 1, 2, 0, 1, 12, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A13-11-1', 2, 1, 2, 0, 4, 13, 1, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-11-2', 2, 1, 2, 0, 4, 13, 2, 3, 0, 1, 'B0000040', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-11-3', 2, 1, 2, 0, 4, 13, 3, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-11-4', 2, 1, 2, 0, 4, 13, 4, 3, 0, 1, 'B0000177', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-11-5', 2, 1, 2, 0, 4, 13, 5, 3, 0, 1, 'B0000010', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-12-1', 2, 1, 2, 0, 3, 13, 1, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-12-2', 2, 1, 2, 0, 3, 13, 2, 2, 0, 1, 'B0000051', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-12-3', 2, 1, 2, 0, 3, 13, 3, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-12-4', 2, 1, 2, 0, 3, 13, 4, 2, 0, 1, 'B0000179', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-12-5', 2, 1, 2, 0, 3, 13, 5, 2, 0, 1, 'B0000017', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A13-13-1', 2, 1, 2, 0, 2, 13, 1, 1, 0, 1, 'B0000016', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A13-13-2', 2, 1, 2, 0, 2, 13, 2, 1, 0, 1, 'B0000022', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A13-13-3', 2, 1, 2, 0, 2, 13, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A13-13-4', 2, 1, 2, 0, 2, 13, 4, 1, 0, 1, 'B0000109', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A13-13-5', 2, 1, 2, 0, 2, 13, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A13-15-1', 2, 1, 2, 0, 1, 13, 1, 1, 0, 1, 'B0000023', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A13-15-2', 2, 1, 2, 0, 1, 13, 2, 1, 0, 1, 'B0000001', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A13-15-3', 2, 1, 2, 0, 1, 13, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A13-15-4', 2, 1, 2, 0, 1, 13, 4, 1, 0, 1, 'B0000058', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A13-15-5', 2, 1, 2, 0, 1, 13, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-11-1', 2, 1, 2, 0, 4, 14, 1, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-11-2', 2, 1, 2, 0, 4, 14, 2, 3, 0, 1, 'B0000037', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-11-3', 2, 1, 2, 0, 4, 14, 3, 3, 0, 1, 'B0000005', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-11-4', 2, 1, 2, 0, 4, 14, 4, 3, 0, 1, 'B0000041', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-11-5', 2, 1, 2, 0, 4, 14, 5, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-12-1', 2, 1, 2, 0, 3, 14, 1, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-12-2', 2, 1, 2, 0, 3, 14, 2, 2, 0, 1, 'B0000019', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-12-3', 2, 1, 2, 0, 3, 14, 3, 2, 0, 1, 'B0000008', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-12-4', 2, 1, 2, 0, 3, 14, 4, 2, 0, 1, 'B0000117', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-12-5', 2, 1, 2, 0, 3, 14, 5, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A14-13-1', 2, 1, 2, 0, 2, 14, 1, 1, 0, 0, '', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-13-2', 2, 1, 2, 0, 2, 14, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A14-13-3', 2, 1, 2, 0, 2, 14, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-13-4', 2, 1, 2, 0, 2, 14, 4, 1, 0, 1, 'B0000140', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-13-5', 2, 1, 2, 0, 2, 14, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-15-1', 2, 1, 2, 0, 1, 14, 1, 1, 0, 1, 'B0000020', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A14-15-2', 2, 1, 2, 0, 1, 14, 2, 1, 0, 1, 'B0000188', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A14-15-3', 2, 1, 2, 0, 1, 14, 3, 1, 0, 1, 'B0000181', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-15-4', 2, 1, 2, 0, 1, 14, 4, 1, 0, 1, 'B0000113', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A14-15-5', 2, 1, 2, 0, 1, 14, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A15-11-1', 2, 1, 2, 0, 4, 15, 1, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-11-2', 2, 1, 2, 0, 4, 15, 2, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-11-3', 2, 1, 2, 0, 4, 15, 3, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-11-4', 2, 1, 2, 0, 4, 15, 4, 3, 0, 1, 'B0000057', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-11-5', 2, 1, 2, 0, 4, 15, 5, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-12-1', 2, 1, 2, 0, 3, 15, 1, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-12-2', 2, 1, 2, 0, 3, 15, 2, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-12-3', 2, 1, 2, 0, 3, 15, 3, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-12-4', 2, 1, 2, 0, 3, 15, 4, 2, 0, 1, 'B0000102', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-12-5', 2, 1, 2, 0, 3, 15, 5, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-13-1', 2, 1, 2, 0, 2, 15, 1, 1, 0, 1, 'B0000198', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-13-2', 2, 1, 2, 0, 2, 15, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A15-13-3', 2, 1, 2, 0, 2, 15, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A15-13-4', 2, 1, 2, 0, 2, 15, 4, 1, 0, 1, 'B0000174', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A15-13-5', 2, 1, 2, 0, 2, 15, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A15-15-1', 2, 1, 2, 0, 1, 15, 1, 1, 0, 1, 'B0000015', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A15-15-2', 2, 1, 2, 0, 1, 15, 2, 1, 0, 1, 'B0000136', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A15-15-3', 2, 1, 2, 0, 1, 15, 3, 1, 0, 1, 'B0000077', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A15-15-4', 2, 1, 2, 0, 1, 15, 4, 1, 0, 1, 'B0000092', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A15-15-5', 2, 1, 2, 0, 1, 15, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A16-11-1', 2, 1, 2, 0, 4, 16, 1, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-11-2', 2, 1, 2, 0, 4, 16, 2, 3, 0, 1, 'B0000021', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-11-3', 2, 1, 2, 0, 4, 16, 3, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-11-4', 2, 1, 2, 0, 4, 16, 4, 3, 0, 1, 'B0000059', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-11-5', 2, 1, 2, 0, 4, 16, 5, 3, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-12-1', 2, 1, 2, 0, 3, 16, 1, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-12-2', 2, 1, 2, 0, 3, 16, 2, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-12-3', 2, 1, 2, 0, 3, 16, 3, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-12-4', 2, 1, 2, 0, 3, 16, 4, 2, 0, 1, 'B0000054', 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-12-5', 2, 1, 2, 0, 3, 16, 5, 2, 0, 1, NULL, 'C'); +INSERT INTO `tbl_app_location` VALUES ('A16-13-1', 2, 1, 2, 0, 2, 16, 1, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A16-13-2', 2, 1, 2, 0, 2, 16, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A16-13-3', 2, 1, 2, 0, 2, 16, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A16-13-4', 2, 1, 2, 0, 2, 16, 4, 1, 0, 1, 'B0000055', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A16-13-5', 2, 1, 2, 0, 2, 16, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A16-15-1', 2, 1, 2, 0, 1, 16, 1, 1, 0, 1, 'B0000197', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A16-15-2', 2, 1, 2, 0, 1, 16, 2, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A16-15-3', 2, 1, 2, 0, 1, 16, 3, 1, 0, 1, 'B0000091', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A16-15-4', 2, 1, 2, 0, 1, 16, 4, 1, 0, 1, 'B0000169', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A16-15-5', 2, 1, 2, 0, 1, 16, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A17-13-1', 2, 1, 2, 0, 2, 17, 1, 1, 0, 1, 'B0000050', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A17-13-2', 2, 1, 2, 0, 2, 17, 2, 1, 0, 1, 'B0000139', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A17-13-3', 2, 1, 2, 0, 2, 17, 3, 1, 0, 1, 'B0000076', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A17-13-4', 2, 1, 2, 0, 2, 17, 4, 1, 0, 1, 'B0000056', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A17-13-5', 2, 1, 2, 0, 2, 17, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A17-15-1', 2, 1, 2, 0, 1, 17, 1, 1, 0, 1, 'B0000211', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A17-15-2', 2, 1, 2, 0, 1, 17, 2, 1, 0, 1, 'B0000018', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A17-15-3', 2, 1, 2, 0, 1, 17, 3, 1, 0, 1, 'B0000075', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A17-15-4', 2, 1, 2, 0, 1, 17, 4, 1, 0, 1, 'B0000028', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A17-15-5', 2, 1, 2, 0, 1, 17, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A18-13-1', 2, 1, 2, 0, 2, 18, 1, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A18-13-2', 2, 1, 2, 0, 2, 18, 2, 1, 0, 1, 'B0000033', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A18-13-3', 2, 1, 2, 0, 2, 18, 3, 1, 0, 1, 'B0000074', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A18-13-4', 2, 1, 2, 0, 2, 18, 4, 1, 0, 1, 'B0000173', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A18-13-5', 2, 1, 2, 0, 2, 18, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A18-15-1', 2, 1, 2, 0, 1, 18, 1, 1, 0, 1, 'B0000043', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A18-15-2', 2, 1, 2, 0, 1, 18, 2, 1, 0, 1, 'B0000080', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A18-15-3', 2, 1, 2, 0, 1, 18, 3, 1, 0, 1, 'B0000078', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A18-15-4', 2, 1, 2, 0, 1, 18, 4, 1, 0, 1, 'B0000060', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A18-15-5', 2, 1, 2, 0, 1, 18, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A19-13-1', 2, 1, 2, 0, 2, 19, 1, 1, 0, 1, 'B0000009', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A19-13-2', 2, 1, 2, 0, 2, 19, 2, 1, 0, 1, 'B0000073', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A19-13-3', 2, 1, 2, 0, 2, 19, 3, 1, 0, 1, 'B0000090', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A19-13-4', 2, 1, 2, 0, 2, 19, 4, 1, 0, 1, 'B0000061', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A19-13-5', 2, 1, 2, 0, 2, 19, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A19-15-1', 2, 1, 2, 0, 1, 19, 1, 1, 0, 1, 'B0000196', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A19-15-2', 2, 1, 2, 0, 1, 19, 2, 1, 0, 1, 'B0000063', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A19-15-3', 2, 1, 2, 0, 1, 19, 3, 1, 0, 1, 'B0000089', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A19-15-4', 2, 1, 2, 0, 1, 19, 4, 1, 0, 1, 'B0000025', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A19-15-5', 2, 1, 2, 0, 1, 19, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A20-15-1', 2, 1, 2, 0, 1, 20, 1, 1, 0, 1, 'B0000183', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A20-15-2', 2, 1, 2, 0, 1, 20, 2, 1, 0, 1, 'B0000069', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A20-15-3', 2, 1, 2, 0, 1, 20, 3, 1, 0, 1, 'B0000079', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A20-15-4', 2, 1, 2, 0, 1, 20, 4, 1, 0, 1, 'B0000094', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A20-15-5', 2, 1, 2, 0, 1, 20, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A21-13-1', 2, 1, 2, 0, 2, 21, 1, 1, 0, 1, 'B0000207', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A21-13-2', 2, 1, 2, 0, 2, 21, 2, 1, 0, 1, 'B0000071', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A21-13-3', 2, 1, 2, 0, 2, 21, 3, 1, 0, 1, 'B0000082', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A21-13-4', 2, 1, 2, 0, 2, 21, 4, 1, 0, 1, 'B0000172', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A21-13-5', 2, 1, 2, 0, 2, 21, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A21-15-1', 2, 1, 2, 0, 1, 21, 1, 1, 0, 1, 'B0000216', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A21-15-2', 2, 1, 2, 0, 1, 21, 2, 1, 0, 1, 'B0000068', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A21-15-3', 2, 1, 2, 0, 1, 21, 3, 1, 0, 1, 'B0000085', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A21-15-4', 2, 1, 2, 0, 1, 21, 4, 1, 0, 1, 'B0000101', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A21-15-5', 2, 1, 2, 0, 1, 21, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A22-13-1', 2, 1, 2, 0, 2, 22, 1, 1, 0, 1, 'B0000011', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A22-13-2', 2, 1, 2, 0, 2, 22, 2, 1, 0, 1, 'B0000065', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A22-13-3', 2, 1, 2, 0, 2, 22, 3, 1, 0, 1, 'B0000088', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A22-13-4', 2, 1, 2, 0, 2, 22, 4, 1, 0, 1, 'B0000170', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A22-13-5', 2, 1, 2, 0, 2, 22, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A22-15-1', 2, 1, 2, 0, 1, 22, 1, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A22-15-2', 2, 1, 2, 0, 1, 22, 2, 1, 0, 1, 'B0000072', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A22-15-3', 2, 1, 2, 0, 1, 22, 3, 1, 0, 1, 'B0000159', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A22-15-4', 2, 1, 2, 0, 1, 22, 4, 1, 0, 1, 'B0000121', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A22-15-5', 2, 1, 2, 0, 1, 22, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A23-13-1', 2, 1, 2, 0, 2, 23, 1, 1, 0, 1, 'B0000182', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A23-13-2', 2, 1, 2, 0, 2, 23, 2, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A23-13-3', 2, 1, 2, 0, 2, 23, 3, 1, 0, 1, 'B0000086', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A23-13-4', 2, 1, 2, 0, 2, 23, 4, 1, 0, 1, 'B0000120', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A23-13-5', 2, 1, 2, 0, 2, 23, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A23-15-1', 2, 1, 2, 0, 1, 23, 1, 1, 0, 1, 'B0000187', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A23-15-2', 2, 1, 2, 0, 1, 23, 2, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A23-15-3', 2, 1, 2, 0, 1, 23, 3, 1, 0, 1, 'B0000098', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A23-15-4', 2, 1, 2, 0, 1, 23, 4, 1, 0, 1, 'B0000114', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A23-15-5', 2, 1, 2, 0, 1, 23, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A24-13-1', 2, 1, 2, 0, 2, 24, 1, 1, 0, 1, 'B0000185', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A24-13-2', 2, 1, 2, 0, 2, 24, 2, 1, 0, 1, 'B0000062', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A24-13-3', 2, 1, 2, 0, 2, 24, 3, 1, 0, 1, 'B0000087', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A24-13-4', 2, 1, 2, 0, 2, 24, 4, 1, 0, 1, 'B0000167', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A24-13-5', 2, 1, 2, 0, 2, 24, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A24-15-1', 2, 1, 2, 0, 1, 24, 1, 1, 0, 1, 'B0000184', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A24-15-2', 2, 1, 2, 0, 1, 24, 2, 1, 0, 1, 'B0000133', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A24-15-3', 2, 1, 2, 0, 1, 24, 3, 1, 0, 1, 'B0000100', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A24-15-4', 2, 1, 2, 0, 1, 24, 4, 1, 0, 1, 'B0000165', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A24-15-5', 2, 1, 2, 0, 1, 24, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A25-13-1', 2, 1, 2, 0, 2, 25, 1, 1, 0, 1, 'B0000192', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A25-13-2', 2, 1, 2, 0, 2, 25, 2, 1, 0, 1, 'B0000081', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A25-13-3', 2, 1, 2, 0, 2, 25, 3, 1, 0, 1, 'B0000083', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A25-13-4', 2, 1, 2, 0, 2, 25, 4, 1, 0, 1, 'B0000164', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A25-13-5', 2, 1, 2, 0, 2, 25, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A25-15-1', 2, 1, 2, 0, 1, 25, 1, 1, 0, 1, 'B0000052', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A25-15-2', 2, 1, 2, 0, 1, 25, 2, 1, 0, 1, 'B0000104', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A25-15-3', 2, 1, 2, 0, 1, 25, 3, 1, 0, 1, 'B0000097', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A25-15-4', 2, 1, 2, 0, 1, 25, 4, 1, 0, 1, 'B0000175', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A25-15-5', 2, 1, 2, 0, 1, 25, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A26-13-1', 2, 1, 2, 0, 2, 26, 1, 1, 0, 1, 'B0000118', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A26-13-2', 2, 1, 2, 0, 2, 26, 2, 1, 0, 1, 'B0000137', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A26-13-3', 2, 1, 2, 0, 2, 26, 3, 1, 0, 1, 'B0000084', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A26-13-4', 2, 1, 2, 0, 2, 26, 4, 1, 0, 1, 'B0000163', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A26-13-5', 2, 1, 2, 0, 2, 26, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A26-15-1', 2, 1, 2, 0, 1, 26, 1, 1, 0, 1, 'B0000209', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A26-15-2', 2, 1, 2, 0, 1, 26, 2, 1, 0, 1, 'B0000035', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A26-15-3', 2, 1, 2, 0, 1, 26, 3, 1, 0, 1, 'B0000067', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A26-15-4', 2, 1, 2, 0, 1, 26, 4, 1, 0, 1, 'B0000180', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A26-15-5', 2, 1, 2, 0, 1, 26, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A27-13-1', 2, 1, 2, 0, 2, 27, 1, 1, 0, 1, 'B0000116', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A27-13-2', 2, 1, 2, 0, 2, 27, 2, 1, 0, 1, 'B0000107', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A27-13-3', 2, 1, 2, 0, 2, 27, 3, 1, 0, 1, 'B0000096', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A27-13-4', 2, 1, 2, 0, 2, 27, 4, 1, 0, 1, 'B0000162', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A27-13-5', 2, 1, 2, 0, 2, 27, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A27-15-1', 2, 1, 2, 0, 1, 27, 1, 1, 0, 1, 'B0000045', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A27-15-2', 2, 1, 2, 0, 1, 27, 2, 1, 0, 1, 'B0000134', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A27-15-3', 2, 1, 2, 0, 1, 27, 3, 1, 0, 1, 'B0000123', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A27-15-4', 2, 1, 2, 0, 1, 27, 4, 1, 0, 1, 'B0000168', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A27-15-5', 2, 1, 2, 0, 1, 27, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A28-13-1', 2, 1, 2, 0, 2, 28, 1, 1, 0, 1, 'B0000210', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A28-13-2', 2, 1, 2, 0, 2, 28, 2, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A28-13-3', 2, 1, 2, 0, 2, 28, 3, 1, 0, 1, 'B0000095', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A28-13-4', 2, 1, 2, 0, 2, 28, 4, 1, 0, 1, 'B0000145', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A28-13-5', 2, 1, 2, 0, 2, 28, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A28-15-1', 2, 1, 2, 0, 1, 28, 1, 1, 0, 1, 'B0000049', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A28-15-2', 2, 1, 2, 0, 1, 28, 2, 1, 0, 1, 'B0000131', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A28-15-3', 2, 1, 2, 0, 1, 28, 3, 1, 0, 1, 'B0000153', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A28-15-4', 2, 1, 2, 0, 1, 28, 4, 1, 0, 1, 'B0000119', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A28-15-5', 2, 1, 2, 0, 1, 28, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A29-13-1', 2, 1, 2, 0, 2, 29, 1, 1, 0, 1, 'B0000112', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A29-13-2', 2, 1, 2, 0, 2, 29, 2, 1, 0, 1, 'B0000135', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A29-13-3', 2, 1, 2, 0, 2, 29, 3, 1, 0, 1, 'B0000158', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A29-13-4', 2, 1, 2, 0, 2, 29, 4, 1, 0, 1, 'B0000171', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A29-13-5', 2, 1, 2, 0, 2, 29, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A29-15-1', 2, 1, 2, 0, 1, 29, 1, 1, 0, 1, 'B0000203', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A29-15-2', 2, 1, 2, 0, 1, 29, 2, 1, 0, 1, 'B0000129', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A29-15-3', 2, 1, 2, 0, 1, 29, 3, 1, 0, 1, 'B0000157', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A29-15-4', 2, 1, 2, 0, 1, 29, 4, 1, 0, 1, 'B0000042', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A29-15-5', 2, 1, 2, 0, 1, 29, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A30-13-1', 2, 1, 2, 0, 2, 30, 1, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A30-13-2', 2, 1, 2, 0, 2, 30, 2, 1, 0, 1, 'B0000106', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A30-13-3', 2, 1, 2, 0, 2, 30, 3, 1, 0, 1, 'B0000155', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A30-13-4', 2, 1, 2, 0, 2, 30, 4, 1, 0, 1, 'B0000166', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A30-13-5', 2, 1, 2, 0, 2, 30, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A30-15-1', 2, 1, 2, 0, 1, 30, 1, 1, 0, 1, 'B0000070', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A30-15-2', 2, 1, 2, 0, 1, 30, 2, 1, 0, 1, 'B0000038', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A30-15-3', 2, 1, 2, 0, 1, 30, 3, 1, 0, 1, 'B0000150', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A30-15-4', 2, 1, 2, 0, 1, 30, 4, 1, 0, 1, 'B0000066', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A30-15-5', 2, 1, 2, 0, 1, 30, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A31-13-1', 2, 1, 2, 0, 2, 31, 1, 1, 0, 1, 'B0000190', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A31-13-2', 2, 1, 2, 0, 2, 31, 2, 1, 0, 1, 'B0000132', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A31-13-3', 2, 1, 2, 0, 2, 31, 3, 1, 0, 1, 'B0000156', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A31-13-4', 2, 1, 2, 0, 2, 31, 4, 1, 0, 1, 'B0000110', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A31-13-5', 2, 1, 2, 0, 2, 31, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A31-15-1', 2, 1, 2, 0, 1, 31, 1, 1, 0, 1, 'B0000194', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A31-15-2', 2, 1, 2, 0, 1, 31, 2, 1, 0, 1, 'B0000127', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A31-15-3', 2, 1, 2, 0, 1, 31, 3, 1, 0, 1, 'B0000149', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A31-15-4', 2, 1, 2, 0, 1, 31, 4, 1, 0, 1, 'B0000108', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A31-15-5', 2, 1, 2, 0, 1, 31, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A32-13-1', 2, 1, 2, 0, 2, 32, 1, 1, 0, 1, 'B0000218', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A32-13-2', 2, 1, 2, 0, 2, 32, 2, 1, 0, 1, 'B0000128', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A32-13-3', 2, 1, 2, 0, 2, 32, 3, 1, 0, 1, 'B0000154', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A32-13-4', 2, 1, 2, 0, 2, 32, 4, 1, 0, 1, 'B0000099', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A32-13-5', 2, 1, 2, 0, 2, 32, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A32-15-1', 2, 1, 2, 0, 1, 32, 1, 1, 0, 0, '', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A32-15-2', 2, 1, 2, 0, 1, 32, 2, 1, 0, 1, 'B0000125', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A32-15-3', 2, 1, 2, 0, 1, 32, 3, 1, 0, 1, 'B0000147', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A32-15-4', 2, 1, 2, 0, 1, 32, 4, 1, 0, 1, 'B0000103', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A32-15-5', 2, 1, 2, 0, 1, 32, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A33-13-1', 2, 1, 2, 0, 2, 33, 1, 1, 0, 1, 'B0000202', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A33-13-2', 2, 1, 2, 0, 2, 33, 2, 1, 0, 1, 'B0000126', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A33-13-3', 2, 1, 2, 0, 2, 33, 3, 1, 0, 1, 'B0000151', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A33-13-4', 2, 1, 2, 0, 2, 33, 4, 1, 0, 1, 'B0000093', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A33-13-5', 2, 1, 2, 0, 2, 33, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A33-15-1', 2, 1, 2, 0, 1, 33, 1, 1, 0, 1, 'B0000199', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A33-15-2', 2, 1, 2, 0, 1, 33, 2, 1, 0, 1, 'B0000122', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A33-15-3', 2, 1, 2, 0, 1, 33, 3, 1, 0, 1, 'B0000144', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A33-15-4', 2, 1, 2, 0, 1, 33, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A33-15-5', 2, 1, 2, 0, 1, 33, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A34-13-1', 2, 1, 2, 0, 2, 34, 1, 1, 0, 1, 'B0000111', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A34-13-2', 2, 1, 2, 0, 2, 34, 2, 1, 0, 1, 'B0000130', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A34-13-3', 2, 1, 2, 0, 2, 34, 3, 1, 0, 1, 'B0000148', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A34-13-4', 2, 1, 2, 0, 2, 34, 4, 1, 0, 1, 'B0000141', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A34-13-5', 2, 1, 2, 0, 2, 34, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A34-15-1', 2, 1, 2, 0, 1, 34, 1, 1, 0, 1, 'B0000053', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A34-15-2', 2, 1, 2, 0, 1, 34, 2, 1, 0, 1, 'B0000161', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A34-15-3', 2, 1, 2, 0, 1, 34, 3, 1, 0, 1, 'B0000143', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A34-15-4', 2, 1, 2, 0, 1, 34, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A34-15-5', 2, 1, 2, 0, 1, 34, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A35-13-1', 2, 1, 2, 0, 2, 35, 1, 1, 0, 1, 'B0000186', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A35-13-2', 2, 1, 2, 0, 2, 35, 2, 1, 0, 1, 'B0000124', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A35-13-3', 2, 1, 2, 0, 2, 35, 3, 1, 0, 1, 'B0000152', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A35-13-4', 2, 1, 2, 0, 2, 35, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A35-13-5', 2, 1, 2, 0, 2, 35, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A35-15-1', 2, 1, 2, 0, 1, 35, 1, 1, 0, 1, 'B0000046', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A35-15-2', 2, 1, 2, 0, 1, 35, 2, 1, 0, 1, 'B0000031', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A35-15-3', 2, 1, 2, 0, 1, 35, 3, 1, 0, 1, 'B0000176', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A35-15-4', 2, 1, 2, 0, 1, 35, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A35-15-5', 2, 1, 2, 0, 1, 35, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A36-13-1', 2, 1, 2, 0, 2, 36, 1, 1, 0, 1, 'B0000201', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A36-13-2', 2, 1, 2, 0, 2, 36, 2, 1, 0, 1, 'B0000160', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A36-13-3', 2, 1, 2, 0, 2, 36, 3, 1, 0, 1, 'B0000146', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A36-13-4', 2, 1, 2, 0, 2, 36, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A36-13-5', 2, 1, 2, 0, 2, 36, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A36-15-1', 2, 1, 2, 0, 1, 36, 1, 1, 0, 1, 'B0000193', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A36-15-2', 2, 1, 2, 0, 1, 36, 2, 1, 0, 1, 'B0000036', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A36-15-3', 2, 1, 2, 0, 1, 36, 3, 1, 0, 1, 'B0000142', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A36-15-4', 2, 1, 2, 0, 1, 36, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A36-15-5', 2, 1, 2, 0, 1, 36, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A37-13-1', 2, 1, 2, 0, 2, 37, 1, 1, 0, 1, 'B0000204', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A37-13-2', 2, 1, 2, 0, 2, 37, 2, 1, 0, 1, 'B0000013', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A37-13-3', 2, 1, 2, 0, 2, 37, 3, 1, 0, 1, 'B0000029', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A37-13-4', 2, 1, 2, 0, 2, 37, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A37-13-5', 2, 1, 2, 0, 2, 37, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A37-15-1', 2, 1, 2, 0, 1, 37, 1, 1, 0, 1, 'B0000115', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A37-15-2', 2, 1, 2, 0, 1, 37, 2, 1, 0, 1, 'B0000014', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A37-15-3', 2, 1, 2, 0, 1, 37, 3, 1, 0, 1, 'B0000178', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A37-15-4', 2, 1, 2, 0, 1, 37, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A37-15-5', 2, 1, 2, 0, 1, 37, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A38-13-1', 2, 1, 2, 0, 2, 38, 1, 1, 0, 1, 'B0000007', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A38-13-2', 2, 1, 2, 0, 2, 38, 2, 1, 0, 1, 'B0000034', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A38-13-3', 2, 1, 2, 0, 2, 38, 3, 1, 0, 1, 'B0000026', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A38-13-4', 2, 1, 2, 0, 2, 38, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A38-13-5', 2, 1, 2, 0, 2, 38, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A38-15-1', 2, 1, 2, 0, 1, 38, 1, 1, 0, 1, 'B0000214', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A38-15-2', 2, 1, 2, 0, 1, 38, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A38-15-3', 2, 1, 2, 0, 1, 38, 3, 1, 0, 1, 'B0000032', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A38-15-4', 2, 1, 2, 0, 1, 38, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A38-15-5', 2, 1, 2, 0, 1, 38, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A39-13-1', 2, 1, 2, 0, 2, 39, 1, 1, 0, 1, 'B0000195', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A39-13-2', 2, 1, 2, 0, 2, 39, 2, 1, 0, 1, 'B0000138', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A39-13-3', 2, 1, 2, 0, 2, 39, 3, 1, 0, 1, 'B0000030', 'B'); +INSERT INTO `tbl_app_location` VALUES ('A39-13-4', 2, 1, 2, 0, 2, 39, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A39-13-5', 2, 1, 2, 0, 2, 39, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A39-15-1', 2, 1, 2, 0, 1, 39, 1, 1, 0, 1, 'B0000189', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A39-15-2', 2, 1, 2, 0, 1, 39, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A39-15-3', 2, 1, 2, 0, 1, 39, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A39-15-4', 2, 1, 2, 0, 1, 39, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A39-15-5', 2, 1, 2, 0, 1, 39, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A40-13-1', 2, 1, 2, 0, 2, 40, 1, 1, 0, 1, 'B0000200', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A40-13-2', 2, 1, 2, 0, 2, 40, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A40-13-3', 2, 1, 2, 0, 2, 40, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A40-13-4', 2, 1, 2, 0, 2, 40, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A40-13-5', 2, 1, 2, 0, 2, 40, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A40-15-1', 2, 1, 2, 0, 1, 40, 1, 1, 0, 1, 'B0000206', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A40-15-2', 2, 1, 2, 0, 1, 40, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A40-15-3', 2, 1, 2, 0, 1, 40, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A40-15-4', 2, 1, 2, 0, 1, 40, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A40-15-5', 2, 1, 2, 0, 1, 40, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A41-13-1', 2, 1, 2, 0, 2, 41, 1, 1, 0, 1, 'B0000215', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A41-13-2', 2, 1, 2, 0, 2, 41, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A41-13-3', 2, 1, 2, 0, 2, 41, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A41-13-4', 2, 1, 2, 0, 2, 41, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A41-13-5', 2, 1, 2, 0, 2, 41, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A41-15-1', 2, 1, 2, 0, 1, 41, 1, 1, 0, 1, 'B0000212', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A41-15-2', 2, 1, 2, 0, 1, 41, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A41-15-3', 2, 1, 2, 0, 1, 41, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A41-15-4', 2, 1, 2, 0, 1, 41, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A41-15-5', 2, 1, 2, 0, 1, 41, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A42-13-1', 2, 1, 2, 0, 2, 42, 1, 1, 0, 1, 'B0000213', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A42-13-2', 2, 1, 2, 0, 2, 42, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A42-13-3', 2, 1, 2, 0, 2, 42, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A42-13-4', 2, 1, 2, 0, 2, 42, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A42-13-5', 2, 1, 2, 0, 2, 42, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A42-15-1', 2, 1, 2, 0, 1, 42, 1, 1, 0, 1, 'B0000002', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A42-15-2', 2, 1, 2, 0, 1, 42, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A42-15-3', 2, 1, 2, 0, 1, 42, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A42-15-4', 2, 1, 2, 0, 1, 42, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A42-15-5', 2, 1, 2, 0, 1, 42, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A43-13-1', 2, 1, 2, 0, 2, 43, 1, 1, 0, 1, 'B0000208', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A43-13-2', 2, 1, 2, 0, 2, 43, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A43-13-3', 2, 1, 2, 0, 2, 43, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A43-13-4', 2, 1, 2, 0, 2, 43, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A43-13-5', 2, 1, 2, 0, 2, 43, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A43-15-1', 2, 1, 2, 0, 1, 43, 1, 1, 0, 1, 'B0000006', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A43-15-2', 2, 1, 2, 0, 1, 43, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A43-15-3', 2, 1, 2, 0, 1, 43, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A43-15-4', 2, 1, 2, 0, 1, 43, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A43-15-5', 2, 1, 2, 0, 1, 43, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A44-13-1', 2, 1, 2, 0, 2, 44, 1, 1, 0, 1, 'B0000205', 'A'); +INSERT INTO `tbl_app_location` VALUES ('A44-13-2', 2, 1, 2, 0, 2, 44, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A44-13-3', 2, 1, 2, 0, 2, 44, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A44-13-4', 2, 1, 2, 0, 2, 44, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A44-13-5', 2, 1, 2, 0, 2, 44, 5, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A44-15-1', 2, 1, 2, 0, 1, 44, 1, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A44-15-2', 2, 1, 2, 0, 1, 44, 2, 1, 0, 0, NULL, 'A'); +INSERT INTO `tbl_app_location` VALUES ('A44-15-3', 2, 1, 2, 0, 1, 44, 3, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A44-15-4', 2, 1, 2, 0, 1, 44, 4, 1, 0, 1, NULL, 'B'); +INSERT INTO `tbl_app_location` VALUES ('A44-15-5', 2, 1, 2, 0, 1, 44, 5, 1, 0, 1, NULL, 'B'); + +-- ---------------------------- +-- Table structure for tbl_app_order_check +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_order_check`; +CREATE TABLE `tbl_app_order_check` ( + `record_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '记录号,唯一识别码', + `check_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '盘点单号', + `warehouse` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '盘点库别', + `status` int NOT NULL COMMENT '盘点单状态', + `create_time` datetime NOT NULL COMMENT '创建时间', + `complete_time` datetime NULL DEFAULT NULL COMMENT '完成时间', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注信息', + PRIMARY KEY (`record_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_order_check +-- ---------------------------- +INSERT INTO `tbl_app_order_check` VALUES ('202410090853428271728435222827', '202410090853428421728435222842', '100001', 0, '2024-10-09 08:53:43', NULL, NULL); +INSERT INTO `tbl_app_order_check` VALUES ('MES202508347115', 'PD202408230001', '100001', 0, '2024-08-16 17:20:07', NULL, NULL); + +-- ---------------------------- +-- Table structure for tbl_app_order_in +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_order_in`; +CREATE TABLE `tbl_app_order_in` ( + `row_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '记录号,行号', + `guid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '入库订单号', + `in_type` int NOT NULL COMMENT '入库类型', + `batch_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `vehicle_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '箱号', + `goods_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料号', + `goods_num` decimal(10, 2) NULL DEFAULT NULL COMMENT '数量', + `ware_house` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库区', + `order_status` int NOT NULL COMMENT '订单状态', + `create_time` datetime NOT NULL COMMENT '创建时间', + `create_person` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '创建人', + `update_time` datetime NOT NULL COMMENT '更新时间', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `production_date` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库区', + PRIMARY KEY (`row_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_order_in +-- ---------------------------- +INSERT INTO `tbl_app_order_in` VALUES ('3d6d2f75-35bf-4b37-a741-f4cac9602fce', '2acaf7e7-1aef-4dd6-b002-fffd90d09603', 1, NULL, '11111', NULL, NULL, 'A', 0, '2024-10-25 14:40:52', 'WMS', '2024-10-25 14:40:52', '空托盘入库', NULL); +INSERT INTO `tbl_app_order_in` VALUES ('b9a44304-8635-4b07-9e55-52ed3b6936b8', '35e09646-cea8-491c-8db5-de17b8882b35', 1, NULL, 'T001212', '宝开牌手榴弹', 99.00, NULL, 0, '2024-09-18 16:44:50', 'WMS', '2024-09-18 16:44:50', '', NULL); +INSERT INTO `tbl_app_order_in` VALUES ('c50791ef-a04d-467e-bc36-f0e80ab10e57', 'c2d9cdfb-03a4-4982-b3f1-14da1f2e63bf', 1, NULL, 'T00012', '宝开火箭筒', 999.00, NULL, 0, '2024-09-18 16:51:05', 'WMS', '2024-09-18 16:51:05', '', NULL); + +-- ---------------------------- +-- Table structure for tbl_app_order_out +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_order_out`; +CREATE TABLE `tbl_app_order_out` ( + `row_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `record_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '记录号', + `order_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '入库通知单号', + `warehouse_origin` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '起始库区', + `warehouse_destination` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '目的库区', + `order_type` int NOT NULL COMMENT '出库单类型', + `delivery_time` datetime NULL DEFAULT NULL COMMENT '计划交货日期', + `row_no` int NOT NULL DEFAULT 0 COMMENT '行号', + `goods_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编号', + `goods_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `goods_num` int NULL DEFAULT NULL COMMENT '数量', + `unit` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位', + `status` int NOT NULL COMMENT '状态 0-创建;', + `create_time` datetime NOT NULL COMMENT '创建时间', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `batch_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + PRIMARY KEY (`row_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_order_out +-- ---------------------------- +INSERT INTO `tbl_app_order_out` VALUES ('031cbeb5-1758-43fb-b6a5-9a325040f8da', 'a243f6e4-db9c-454b-b42a-46671db95f76', 'fdb5f4ee-b626-4c0c-ab27-9b95e9a22771', '1', '', 1, NULL, 1, '2', NULL, 1, '', 0, '2024-08-23 09:39:43', '手动出库', '11'); +INSERT INTO `tbl_app_order_out` VALUES ('0adad190-b316-4bef-b972-5b587abb4d45', '643e4b86-edaf-42ac-a505-5060c89ecb8c', '40aa5aa5-4c02-4dfa-bfd5-fdd069dc4041', '四向车立体库', '', 1, NULL, 1, '1', NULL, 1, '', 0, '2024-09-24 18:00:39', '', NULL); +INSERT INTO `tbl_app_order_out` VALUES ('1a060433-13da-4dd5-a91e-f345f4d848ec', '3ccc1239-077f-4a2a-bfec-6470b41d20ab', '7f4cc509-372d-45c7-bbdf-17c4e1973735', '四向车立体库', 'XZBK0001', 1, NULL, 1, NULL, NULL, 0, '', 0, '2024-10-09 08:52:39', '空托盘出库', NULL); +INSERT INTO `tbl_app_order_out` VALUES ('22000bcc-ef13-4c92-bbbc-0d0a347bf22f', '411bd622-9ec6-44d4-9dcb-9e0c0311f45a', 'fd5efeca-9b51-4329-92eb-a9d07fe20229', '1', '', 1, NULL, 1, '2', NULL, 1, '', 0, '2024-08-23 09:39:31', '手动出库', ''); +INSERT INTO `tbl_app_order_out` VALUES ('5bcf3792-2269-426e-9c75-ff4d32df6c81', 'd36b4960-6cee-4262-8fc7-fe0944b06338', 'a37be771-ae34-44dc-b02d-5fefeee91d51', '100001', '', 1, NULL, 1, 'XC20071215', NULL, 10, '', 0, '2024-08-22 16:56:11', '手动出库', 'XC20071215241001'); +INSERT INTO `tbl_app_order_out` VALUES ('7ff708a5-647c-41ca-ba1c-ece11415a55b', '75f35183-0a9b-4c76-beb1-149ef63c3c8d', '6aa7e088-b5e8-4220-8501-3723a2ea1fc5', '四向车立体库', '1', 1, NULL, 1, NULL, NULL, 0, '', 0, '2024-10-12 15:33:43', '空托盘出库', NULL); +INSERT INTO `tbl_app_order_out` VALUES ('8db707e4-6118-4faa-a581-6a5efbb3c1f1', 'b0807dca-0a65-4068-a689-ee3db93d8174', 'ce75687e-ca4a-4648-b876-2eda0dd2abfa', '1', '', 1, NULL, 1, '1', NULL, 1, '', 0, '2024-08-22 16:55:37', '手动出库', '1'); +INSERT INTO `tbl_app_order_out` VALUES ('a267412f-aafb-4ea7-be19-0fc4c8344863', '8e7fba3e-678d-4290-8247-d1abd00cf6ad', '431cc71a-163a-4d95-a02b-87b1305d1d7a', '300002', '', 1, NULL, 1, 'XC001', NULL, 18, '', 0, '2024-08-23 11:18:07', '手动出库', ''); +INSERT INTO `tbl_app_order_out` VALUES ('b3238a8e-f855-4a0a-9cb2-89129e1b63b2', '2a49ed23-a280-46fd-b89e-793380ca7864', 'f485a4a2-5f26-4539-9242-3807e68bbc6a', '1', '', 1, NULL, 1, '2', NULL, 1, '', 0, '2024-08-22 17:21:00', '手动出库', '2'); +INSERT INTO `tbl_app_order_out` VALUES ('de3c8333-b78c-4b80-b73c-a10fa2fa4914', '94a2c814-8a69-4b25-b670-016fd0acf457', 'a702bed6-4691-464f-adf4-d336a003806e', '100001', '', 1, NULL, 1, 'XC20001215', NULL, 100, '', 0, '2024-08-22 17:52:46', '手动出库', ''); + +-- ---------------------------- +-- Table structure for tbl_app_part_info +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_part_info`; +CREATE TABLE `tbl_app_part_info` ( + `Material` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '零件号', + `ItemDesc` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', + `Category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '零件类型', + `CategoryRemark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '策略', + `Unload_Place` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '卸货点', + `Kitting_Point` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '配料点', + `Property` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '可用性', + `Vendor_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商代码', + `Data_Owner` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据负责人', + `Part_Weight` double NULL DEFAULT NULL COMMENT '重量', + `Storage_Location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库位', + `Storage_Type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '存储类型', + `Storage_Bin` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'BIN位', + `Vendor_Name_EN` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商名称-英文', + `Vendor_Country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '进口/国产', + `UpdateDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新日期', + `SLED` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '有效期', + `Vendor_Name_CN` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商名称-中文' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_part_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_app_stand +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_stand`; +CREATE TABLE `tbl_app_stand` ( + `stand_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '站台', + `allow_in` int NULL DEFAULT NULL COMMENT '允许入库', + `allow_out` int NULL DEFAULT NULL COMMENT '允许出库', + `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务id', + `is_lock` int NULL DEFAULT NULL COMMENT '是否锁定/默认值0:未锁定', + `stand_status` int NULL DEFAULT NULL COMMENT '库存状态/默认值0:空闲', + `equipment_id` int NULL DEFAULT NULL, + `area_id` int NULL DEFAULT NULL, + `stand_type` int NULL DEFAULT NULL COMMENT '站台类型,1:基础入出库站台,2:拣选站台', + `stand_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '站台电脑的ip', + PRIMARY KEY (`stand_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_stand +-- ---------------------------- +INSERT INTO `tbl_app_stand` VALUES ('1', 0, 0, NULL, 0, 0, 1, 1, 3, NULL); +INSERT INTO `tbl_app_stand` VALUES ('101', 0, 1, NULL, 0, 0, 1, 1, 1, NULL); +INSERT INTO `tbl_app_stand` VALUES ('111', 1, 0, NULL, 0, 0, 1, 1, 1, NULL); +INSERT INTO `tbl_app_stand` VALUES ('2001', 0, 0, NULL, 0, 0, 0, 1, 2, '127.0.0.1'); + +-- ---------------------------- +-- Table structure for tbl_app_stock +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_stock`; +CREATE TABLE `tbl_app_stock` ( + `stock_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '库存编号', + `warehouse_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '仓库名称', + `location_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '库位编号', + `vehicle_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '载具编号', + `goods_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编码', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料描述', + `batch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `available_num` int NULL DEFAULT NULL COMMENT '可用数量', + `real_num` int NULL DEFAULT NULL COMMENT '实际数量', + `provider_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商编号', + `provider_name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商名称', + `production_date` datetime NULL DEFAULT NULL COMMENT '生产日期', + `expiration_date` datetime NULL DEFAULT NULL COMMENT '过期日期', + `stock_status` int NULL DEFAULT NULL COMMENT '库存状态', + `goods_status` int NULL DEFAULT NULL COMMENT '物料状态', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_update_time` datetime NULL DEFAULT NULL COMMENT '最近更新时间', + `last_update_user` datetime NULL DEFAULT NULL COMMENT '最近更新用户', + `remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '备注,预留字段', + `is_inventory` int NULL DEFAULT NULL COMMENT '是否盘点,默认为空。', + `inventory_task_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '盘点的任务单号', + `current_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前所在位置', + `remain_num` int NULL DEFAULT NULL COMMENT '剩余数量', + `shelf_life` double NULL DEFAULT NULL COMMENT '保质期--单位:年', + PRIMARY KEY (`stock_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_stock +-- ---------------------------- +INSERT INTO `tbl_app_stock` VALUES ('1', '四向车库', '1', '10', 'XC200012151', NULL, NULL, 9894, 10000, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL); +INSERT INTO `tbl_app_stock` VALUES ('11', '100001', '02-02-02-02', 'XC20071215', 'XC20071215', NULL, 'XC20071215241001', 990, 1000, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_stock` VALUES ('2', '300002', 'A16-11-01', 'XC001241215', 'XC001', NULL, 'XC001241215', 0, 18, NULL, NULL, NULL, NULL, 0, NULL, '2024-08-23 11:16:59', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_stock` VALUES ('202410111324063551728624246355', '四向车立体库', 'A11-15-2', 'B0000016', '5676576', '', '', 2, 2, '', '', NULL, NULL, 0, NULL, '2024-10-11 13:24:06', NULL, NULL, '', NULL, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_stock` VALUES ('258678856856wer', '100001', '02-02-02-02', 'SJ20240124', 'TestIn3', '-', 'SJ20240124', 200, 200, NULL, NULL, NULL, NULL, 0, NULL, '2024-07-17 15:12:06', NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for tbl_app_task +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_task`; +CREATE TABLE `tbl_app_task` ( + `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务编号,主键,UUID', + `task_type` int NOT NULL COMMENT '任务类型(1:入库;2:出库;9:移库)', + `task_status` int NOT NULL COMMENT '任务状态', + `task_group` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务组', + `origin` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '起点', + `destination` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '终点', + `pick_stand` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拣货站台', + `weight` double NULL DEFAULT NULL COMMENT '重量', + `vehicle_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '托盘号', + `vehicle_size` int NULL DEFAULT NULL COMMENT '尺寸', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作人员姓名', + `goods_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编号', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `operate_num` int NULL DEFAULT NULL COMMENT '本次操作数量', + `total_num` int NULL DEFAULT NULL COMMENT '库存总数量', + `etag_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电子标签位置', + `task_priority` int NULL DEFAULT NULL COMMENT '任务优先级:1普通9紧急', + `production_date` datetime NULL DEFAULT NULL COMMENT '入库日期/生产日期', + `expiration_date` datetime NULL DEFAULT NULL COMMENT '过期日期', + `kate_task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '卡特任务的id', + `remark1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备用字段', + PRIMARY KEY (`task_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_task +-- ---------------------------- +INSERT INTO `tbl_app_task` VALUES ('1728615174547', 1, 100, '18e51520-e1ec-4522-8550-3c3e27173430', '111', 'A11-15-2', NULL, 0, 'B0000016', 0, '2024-10-11 12:52:15', '四向车API', '5676576', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_task` VALUES ('1728625182600', 1, 1, '75b185d8-9ea8-4e94-b0ca-bd44f7d8926f', '111', 'A11-15-3', NULL, 0, 'B0000016', 0, '2024-10-11 13:39:43', '四向车API', '5676576', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_task` VALUES ('1728625620160', 1, 1, '2fc74dde-dbb4-46b3-a27b-dbe977c62c62', '111', 'A11-15-4', NULL, 0, 'B0000016', 0, '2024-10-11 13:47:00', '四向车API', '5676576', NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_task` VALUES ('1728628808809', 2, 100, '5335b307-9a7d-460f-b2bc-d362027ce703', 'A28-13-2', '111', '', 0, 'B0000064', NULL, '2024-10-11 14:40:09', 'WMS', '5592416', '', 1, 1, '', 1, '2024-10-11 14:50:25', '2024-10-11 14:50:43', '', '手动出库'); + +-- ---------------------------- +-- Table structure for tbl_app_task_bak +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_task_bak`; +CREATE TABLE `tbl_app_task_bak` ( + `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务编号,主键,UUID', + `task_type` int NOT NULL COMMENT '任务类型(1:入库;2:出库;9:移库)', + `task_status` int NOT NULL COMMENT '任务状态', + `task_group` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务组', + `origin` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '起点', + `destination` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '终点', + `pick_stand` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拣货站台', + `weight` double NULL DEFAULT NULL COMMENT '重量', + `vehicle_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '托盘号', + `vehicle_size` int NULL DEFAULT NULL COMMENT '尺寸', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作人员姓名', + `goods_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编号', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `operate_num` int NULL DEFAULT NULL COMMENT '本次操作数量', + `total_num` int NULL DEFAULT NULL COMMENT '库存总数量', + `etag_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电子标签位置', + `task_priority` int NULL DEFAULT NULL COMMENT '任务优先级:1普通9紧急', + `production_date` datetime NULL DEFAULT NULL COMMENT '入库日期/生产日期', + `expiration_date` datetime NULL DEFAULT NULL COMMENT '过期日期', + `kate_task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '卡特任务的id', + `finish_time` datetime NULL DEFAULT NULL COMMENT '完成时间', + `remark1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备用字段', + PRIMARY KEY (`task_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_task_bak +-- ---------------------------- +INSERT INTO `tbl_app_task_bak` VALUES ('1', 1, 1, '1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for tbl_app_vehicle +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_vehicle`; +CREATE TABLE `tbl_app_vehicle` ( + `vehicle_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '载具编号', + `vehicle_status` int NULL DEFAULT NULL COMMENT '载具状态', + `current_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前位置', + `is_empty` int NULL DEFAULT NULL COMMENT '是否空箱', + PRIMARY KEY (`vehicle_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_vehicle +-- ---------------------------- +INSERT INTO `tbl_app_vehicle` VALUES ('B0000001', 2, 'A13-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000002', 2, 'A42-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000003', 2, 'A11-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000005', 2, 'A14-11-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000006', 2, 'A43-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000007', 2, 'A38-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000008', 2, 'A14-12-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000009', 2, 'A19-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000010', 2, 'A13-11-5', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000011', 2, 'A22-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000012', 2, 'A12-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000013', 2, 'A37-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000014', 2, 'A37-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000015', 2, 'A15-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000016', 2, 'A13-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000017', 2, 'A13-12-5', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000018', 2, 'A17-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000019', 2, 'A14-12-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000020', 2, 'A14-15-1', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000021', 2, 'A16-11-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000022', 2, 'A13-13-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000023', 2, 'A13-15-1', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000025', 2, 'A19-15-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000026', 2, 'A38-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000027', 2, 'A12-15-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000028', 2, 'A17-15-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000029', 2, 'A37-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000030', 2, 'A39-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000031', 2, 'A35-15-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000032', 2, 'A38-15-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000033', 2, 'A18-13-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000034', 2, 'A38-13-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000035', 2, 'A26-15-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000036', 2, 'A36-15-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000037', 2, 'A14-11-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000038', 2, 'A30-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000039', 2, 'A11-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000040', 2, 'A13-11-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000041', 2, 'A14-11-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000042', 2, 'A29-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000043', 2, 'A18-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000044', 2, 'A12-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000045', 2, 'A27-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000046', 2, 'A35-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000048', 2, 'A11-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000049', 2, 'A28-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000050', 2, 'A17-13-1', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000051', 2, 'A13-12-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000052', 2, 'A25-15-1', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000053', 2, 'A34-15-1', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000054', 2, 'A16-12-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000055', 2, 'A16-13-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000056', 2, 'A17-13-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000057', 2, 'A15-11-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000058', 2, 'A13-15-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000059', 2, 'A16-11-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000060', 2, 'A18-15-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000061', 2, 'A19-13-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000062', 2, 'A24-13-2', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000063', 2, 'A19-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000065', 2, 'A22-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000066', 2, 'A30-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000067', 2, 'A26-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000068', 2, 'A21-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000069', 2, 'A20-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000070', 2, 'A30-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000071', 2, 'A21-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000072', 2, 'A22-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000073', 2, 'A19-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000074', 2, 'A18-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000075', 2, 'A17-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000076', 2, 'A17-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000077', 2, 'A15-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000078', 2, 'A18-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000079', 2, 'A20-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000080', 2, 'A18-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000081', 2, 'A25-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000082', 2, 'A21-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000083', 2, 'A25-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000084', 2, 'A26-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000085', 2, 'A21-15-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000086', 2, 'A23-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000087', 2, 'A24-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000088', 2, 'A22-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000089', 2, 'A19-15-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000090', 2, 'A19-13-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000091', 2, 'A16-15-3', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000092', 2, 'A15-15-4', 0); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000093', 2, 'A33-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000094', 2, 'A20-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000095', 2, 'A28-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000096', 2, 'A27-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000097', 2, 'A25-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000098', 2, 'A23-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000099', 2, 'A32-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000100', 2, 'A24-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000101', 2, 'A21-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000102', 2, 'A15-12-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000103', 2, 'A32-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000104', 2, 'A25-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000106', 2, 'A30-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000107', 2, 'A27-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000108', 2, 'A31-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000109', 2, 'A13-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000110', 2, 'A31-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000111', 2, 'A34-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000112', 2, 'A29-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000113', 2, 'A14-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000114', 2, 'A23-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000115', 2, 'A37-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000116', 2, 'A27-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000117', 2, 'A14-12-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000118', 2, 'A26-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000119', 2, 'A28-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000120', 2, 'A23-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000121', 2, 'A22-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000122', 2, 'A33-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000123', 2, 'A27-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000124', 2, 'A35-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000125', 2, 'A32-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000126', 2, 'A33-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000127', 2, 'A31-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000128', 2, 'A32-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000129', 2, 'A29-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000130', 2, 'A34-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000131', 2, 'A28-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000132', 2, 'A31-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000133', 2, 'A24-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000134', 2, 'A27-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000135', 2, 'A29-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000136', 2, 'A15-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000137', 2, 'A26-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000138', 2, 'A39-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000139', 2, 'A17-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000140', 2, 'A14-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000141', 2, 'A34-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000142', 2, 'A36-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000143', 2, 'A34-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000144', 2, 'A33-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000145', 2, 'A28-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000146', 2, 'A36-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000147', 2, 'A32-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000148', 2, 'A34-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000149', 2, 'A31-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000150', 2, 'A30-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000151', 2, 'A33-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000152', 2, 'A35-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000153', 2, 'A28-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000154', 2, 'A32-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000155', 2, 'A30-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000156', 2, 'A31-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000157', 2, 'A29-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000158', 2, 'A29-13-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000159', 2, 'A22-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000160', 2, 'A36-13-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000161', 2, 'A34-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000162', 2, 'A27-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000163', 2, 'A26-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000164', 2, 'A25-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000165', 2, 'A24-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000166', 2, 'A30-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000167', 2, 'A24-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000168', 2, 'A27-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000169', 2, 'A16-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000170', 2, 'A22-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000171', 2, 'A29-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000172', 2, 'A21-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000173', 2, 'A18-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000174', 2, 'A15-13-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000175', 2, 'A25-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000176', 2, 'A35-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000177', 2, 'A13-11-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000178', 2, 'A37-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000179', 2, 'A13-12-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000180', 2, 'A26-15-4', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000181', 2, 'A14-15-3', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000182', 2, 'A23-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000183', 2, 'A20-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000184', 2, 'A24-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000185', 2, 'A24-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000186', 2, 'A35-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000187', 2, 'A23-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000188', 2, 'A14-15-2', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000189', 2, 'A39-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000190', 2, 'A31-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000192', 2, 'A25-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000193', 2, 'A36-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000194', 2, 'A31-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000195', 2, 'A39-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000196', 2, 'A19-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000197', 2, 'A16-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000198', 2, 'A15-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000199', 2, 'A33-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000200', 2, 'A40-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000201', 2, 'A36-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000202', 2, 'A33-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000203', 2, 'A29-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000204', 2, 'A37-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000205', 2, 'A44-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000206', 2, 'A40-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000207', 2, 'A21-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000208', 2, 'A43-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000209', 2, 'A26-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000210', 2, 'A28-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000211', 2, 'A17-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000212', 2, 'A41-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000213', 2, 'A42-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000214', 2, 'A38-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000215', 2, 'A41-13-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000216', 2, 'A21-15-1', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('B0000218', 2, 'A32-13-1', 1); + +-- ---------------------------- +-- Table structure for tbl_sys_config +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_config`; +CREATE TABLE `tbl_sys_config` ( + `config_id` int NOT NULL COMMENT '配置ID', + `config_key` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置键', + `config_value` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置值', + `config_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置类型:1.输入框2.下拉多选3.下拉单选', + `config_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置显示名称', + PRIMARY KEY (`config_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_config +-- ---------------------------- +INSERT INTO `tbl_sys_config` VALUES (1, 'MAX_EMPTY_VEHICLE_NUM', '4', '1', '空箱个数'); + +-- ---------------------------- +-- Table structure for tbl_sys_log +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_log`; +CREATE TABLE `tbl_sys_log` ( + `log_id` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '日志id', + `log_title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '日志标题', + `log_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求方法名', + `log_request` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求参数', + `log_response` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求响应结果', + `log_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求ip', + `log_time` datetime NULL DEFAULT NULL COMMENT '请求时间', + `log_user` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求用户', + PRIMARY KEY (`log_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_menu`; +CREATE TABLE `tbl_sys_menu` ( + `menu_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单编号', + `label_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单名称', + `icon_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标名称', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜单地址', + `parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '父菜单编号', + PRIMARY KEY (`menu_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_menu +-- ---------------------------- +INSERT INTO `tbl_sys_menu` VALUES ('1', '操作', 'Operation', '', '0'); +INSERT INTO `tbl_sys_menu` VALUES ('11', '入库', NULL, '/goodsIn', '1'); +INSERT INTO `tbl_sys_menu` VALUES ('12', '出库', NULL, '/goodsOut', '1'); +INSERT INTO `tbl_sys_menu` VALUES ('13', '盘点', NULL, '/inventory', '1'); +INSERT INTO `tbl_sys_menu` VALUES ('2', '数据', 'Histogram', '', '0'); +INSERT INTO `tbl_sys_menu` VALUES ('21', '库存信息', NULL, '/stock', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('22', '物料信息', NULL, '/goods', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('23', '入库记录', NULL, '/inTaskRecord', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('24', '出库记录', NULL, '/outTaskRecord', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('241', '盘点记录', NULL, '/inventoryRecord', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('25', '任务监控', NULL, '/taskMonitor', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('26', '库位监控', NULL, '/location', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('27', '料箱监控', NULL, '/vehicle', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('3', '系统', 'Setting', NULL, '0'); +INSERT INTO `tbl_sys_menu` VALUES ('31', '用户', NULL, '/user', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('32', '角色', NULL, '/role', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('33', '菜单', NULL, '/menu', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('34', '库口设置', NULL, '/standSettings', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('35', '系统配置', NULL, '/config', '3'); + +-- ---------------------------- +-- Table structure for tbl_sys_permission +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_permission`; +CREATE TABLE `tbl_sys_permission` ( + `permission_id` int NOT NULL AUTO_INCREMENT COMMENT '权限编号', + `menu_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单编号', + `role_id` int NOT NULL COMMENT '角色编号', + PRIMARY KEY (`permission_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_permission +-- ---------------------------- +INSERT INTO `tbl_sys_permission` VALUES (1, '1', 1); +INSERT INTO `tbl_sys_permission` VALUES (2, '11', 1); +INSERT INTO `tbl_sys_permission` VALUES (3, '12', 1); +INSERT INTO `tbl_sys_permission` VALUES (4, '13', 1); +INSERT INTO `tbl_sys_permission` VALUES (5, '2', 1); +INSERT INTO `tbl_sys_permission` VALUES (6, '21', 1); +INSERT INTO `tbl_sys_permission` VALUES (7, '22', 1); +INSERT INTO `tbl_sys_permission` VALUES (8, '23', 1); +INSERT INTO `tbl_sys_permission` VALUES (9, '24', 1); +INSERT INTO `tbl_sys_permission` VALUES (10, '241', 1); +INSERT INTO `tbl_sys_permission` VALUES (11, '25', 1); +INSERT INTO `tbl_sys_permission` VALUES (12, '26', 1); +INSERT INTO `tbl_sys_permission` VALUES (13, '27', 1); +INSERT INTO `tbl_sys_permission` VALUES (14, '3', 1); +INSERT INTO `tbl_sys_permission` VALUES (15, '31', 1); +INSERT INTO `tbl_sys_permission` VALUES (16, '32', 1); +INSERT INTO `tbl_sys_permission` VALUES (17, '33', 1); +INSERT INTO `tbl_sys_permission` VALUES (18, '34', 1); +INSERT INTO `tbl_sys_permission` VALUES (19, '35', 1); + +-- ---------------------------- +-- Table structure for tbl_sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_role`; +CREATE TABLE `tbl_sys_role` ( + `role_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色编号', + `role_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '角色名称', + PRIMARY KEY (`role_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_role +-- ---------------------------- +INSERT INTO `tbl_sys_role` VALUES ('1', '管理员'); +INSERT INTO `tbl_sys_role` VALUES ('2', '普通用户'); + +-- ---------------------------- +-- Table structure for tbl_sys_settings +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_settings`; +CREATE TABLE `tbl_sys_settings` ( + `setting_id` int NOT NULL COMMENT '设置id', + `setting_key` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置键', + `setting_value` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置值', + `setting_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置类型:1.输入框2.下拉多选3.下拉单选', + `setting_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置显示名称', + PRIMARY KEY (`setting_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_settings +-- ---------------------------- +INSERT INTO `tbl_sys_settings` VALUES (1, 'id', '100000', '1', '唯一ID池'); + +-- ---------------------------- +-- Table structure for tbl_sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_user`; +CREATE TABLE `tbl_sys_user` ( + `user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名', + `role_id` int NULL DEFAULT NULL COMMENT '角色', + `login_account` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录账号', + `login_password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录密码', + `add_time` datetime NULL DEFAULT NULL, + `update_time` datetime NULL DEFAULT NULL, + `add_user` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '添加人', + PRIMARY KEY (`user_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_user +-- ---------------------------- +INSERT INTO `tbl_sys_user` VALUES (1, '管理员', 1, 'admin', '812C0C84E2970FA98456DDC5B0B59594', '2023-03-23 11:17:06', '2023-03-23 11:17:10', '系统'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/wms_serve/.gitignore b/wms_serve/.gitignore new file mode 100644 index 0000000..dad8f2d --- /dev/null +++ b/wms_serve/.gitignore @@ -0,0 +1,36 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +/log + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ +.log + +### VS Code ### +.vscode/ +log diff --git a/wms_serve/mvnw b/wms_serve/mvnw new file mode 100644 index 0000000..8a8fb22 --- /dev/null +++ b/wms_serve/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/wms_serve/mvnw.cmd b/wms_serve/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/wms_serve/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/wms_serve/pom.xml b/wms_serve/pom.xml new file mode 100644 index 0000000..f7e5feb --- /dev/null +++ b/wms_serve/pom.xml @@ -0,0 +1,159 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.0.2 + + + com + WMS + 1.0 + WMS + WMS + + 17 + + + + org.springframework.boot + spring-boot-starter-web + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.0 + + + + com.mysql + mysql-connector-j + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-validation + + + + + org.apache.commons + commons-lang3 + + + + + com.fasterxml.jackson.core + jackson-databind + + + + + com.alibaba + fastjson + 2.0.21 + + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + com.google.guava + guava + 31.1-jre + + + + com.github.pagehelper + pagehelper + 5.3.0 + + + com.github.jsqlparser + jsqlparser + 4.4 + + + + + org.apache.httpcomponents + httpmime + 4.5.14 + + + + org.apache.poi + poi-ooxml + 5.2.3 + + + org.apache.poi + poi + 5.2.3 + + + org.projectlombok + lombok + + + + + org.apache.oltu.oauth2 + org.apache.oltu.oauth2.client + 1.0.1 + + + + com.auth0 + java-jwt + 4.4.0 + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + org.apache.tomcat.embed + tomcat-embed-core + 10.1.25 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 16 + 16 + + + + + + diff --git a/wms_serve/src/main/java/META-INF/MANIFEST.MF b/wms_serve/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..6382671 --- /dev/null +++ b/wms_serve/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: com.wuxiShenNan_W8.WmsTestversionApplication + diff --git a/wms_serve/src/main/java/com/wms/WmsApplication.java b/wms_serve/src/main/java/com/wms/WmsApplication.java new file mode 100644 index 0000000..dbf14ac --- /dev/null +++ b/wms_serve/src/main/java/com/wms/WmsApplication.java @@ -0,0 +1,24 @@ +package com.wms; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@SpringBootApplication +@EnableScheduling +@EnableTransactionManagement +@MapperScan("com.wms.mapper") +public class WmsApplication { + + /** + * 主函数,程序的入口 + * + * @param args 命令行参数,以字符串数组形式传入 + */ + public static void main(String[] args) { + SpringApplication.run(WmsApplication.class, args); + } + +} diff --git a/wms_serve/src/main/java/com/wms/bussiness/JobComponent.java b/wms_serve/src/main/java/com/wms/bussiness/JobComponent.java new file mode 100644 index 0000000..818ee37 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/bussiness/JobComponent.java @@ -0,0 +1,708 @@ +package com.wms.bussiness; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.wms.constants.enums.*; +import com.wms.controller.BaseController; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.container.ContainerApiLocalResponse; +import com.wms.entity.app.container.CreateInstoreTaskRequest; +import com.wms.entity.app.container.SendContainerTaskRequest; +import com.wms.entity.app.wcs.WcsTask; +import com.wms.entity.table.*; +import com.wms.mapper.LocationMapper; +import com.wms.mapper.StockMapper; +import com.wms.mapper.TaskMapper; +import com.wms.mapper.VehicleMapper; +import com.wms.service.*; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import com.wms.utils.storage.LocationUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 定期任务类 + */ +@Component +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class JobComponent extends BaseController { + /** + * 任务服务 + */ + private final TaskService taskService; + + /** + * 任务 Mapper + */ + private final TaskMapper taskMapper; + + /** + * 载具/料箱 服务 + */ + private final VehicleService vehicleService; + /** + * 库位服务 + */ + private final LocationService locationService; + + /** + * 库位 Mapper + */ + private final LocationMapper locationMapper; + + /** + * 库位操作类 + */ + private final LocationUtils locationUtils; + + /** + * 站台服务 + */ + private final StandService standService; + /** + * 配置服务 + */ + private final ConfigService configService; + /** + * 库存服务 + */ + private final StockService stockService; + private final TaskRecordService taskRecordService; + private final StockMapper stockMapper; + private final VehicleMapper vehicleMapper; + + + @Scheduled(fixedDelay = 1000) + public void sendTasksToWcs() { + try { + // 查找待下发的任务 + Task taskForQuery = new Task(); + taskForQuery.setTaskStatus(WmsTaskStatus.NEW.getCode()); + List tasks = taskService.selTasks(taskForQuery); + if(tasks == null) { + logger.error("定时器下发任务发生异常,数据库查询任务列表失败"); + return; + } + for(Task task : tasks){ + if(task.getTaskType().equals(TaskType.IN.getCode())) { + sendTasksInToWcs(task); + return; + } + if(task.getTaskType().equals(TaskType.OUT.getCode()) || task.getTaskType().equals(TaskType.INVENTORY.getCode())){ + sendTasksOutToWcs(task); + return; + } + if(task.getTaskType().equals(TaskType.MOVE.getCode())){ + sendTasksMoveToWcs(task); + return; + } + } + }catch (Exception exception){ + logger.error("定时器下发任务发生异常:{}", exception.toString()); + } + } + + /** + * 发送入库任务给WCS + * @param task 任务 + */ + private void sendTasksInToWcs(Task task) { + try { + List thisLocations = locationService.selLocations(new Location(task.getDestination())); + if(thisLocations == null) { + logger.warn("下发入库任务查询库位详细信息失败,数据库网络连接异常,任务号:{}", task.getTaskId()); + return; + } + if(thisLocations.isEmpty()) { + logger.warn("下发入库任务查询库位详细信息异常,不存在详细信息,该库位可能不存在,任务号:{}", task.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.EXCEPTION.getCode()); + taskForUpdate.setRemark1("该库位不存在"); + taskService.executeTask(taskForUpdate); + return; + } + Location thisLocation = thisLocations.get(0); + if(thisLocation.getAreaId() == 1){ + List request = new ArrayList<>(); + // 创建发送的任务 + WcsTask tempTask = new WcsTask(); + tempTask.setTaskId(task.getTaskId()); + tempTask.setTaskType(TaskType.IN.getCode()); + tempTask.setOrigin(task.getOrigin()); + tempTask.setDestination(task.getDestination()); + tempTask.setVehicleNo(task.getVehicleNo()); + tempTask.setVehicleSize(1); + tempTask.setWeight(task.getWeight() == null ? 0 : task.getWeight()); + tempTask.setPriority(task.getTaskPriority()); + request.add(tempTask); + // 发送任务 + ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_SEND_TASK.getValue(), JSON.toJSONString(request)), ResponseEntity.class); + if (result != null && Objects.equals(ResponseCode.OK.getCode(), result.getCode())) { + logger.info("下发立库入库任务成功,任务ID:{},任务信息:{}", tempTask.getTaskId(), JSON.toJSONString(request)); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + taskService.executeTask(taskForUpdate); + return; + } + logger.info("下发立库入库任务失败,任务ID:{},信息:{}", tempTask.getTaskId(), JSON.toJSONString(result)); + } +// else { //四向车库 +// //List request = new ArrayList<>(); +// // 创建发送的任务 +// String uuid = UUID.randomUUID().toString(); +// CreateInstoreTaskRequest request = new CreateInstoreTaskRequest(); +// request.setRequestId(uuid); +// request.setKey(StringUtils.containerMd5(uuid).toUpperCase()); +// request.setPalletNo(task.getVehicleNo()); +// request.setHeight("0"); +// request.setWeight("0"); +// request.setFromCellNo(task.getOrigin()); +// // 发送任务 +// String requestString = JSON.toJSONString(request); +// String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CONTAINERIN_TASK.getValue(), requestString); +// if (responseString == null || responseString.isEmpty()) { +// logger.error("Response string is null or empty"); +// } +// ContainerApiLocalResponse result = JSON.parseObject(responseString, ContainerApiLocalResponse.class); +// if (result != null && result.getCode().equals("200")) { +// logger.info("下发托盘库入库任务成功,任务ID:{}", task.getTaskId()); +// Task taskForUpdate = new Task(); +// taskForUpdate.setTaskId(task.getTaskId()); +// taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); +// taskService.executeTask(taskForUpdate); +// return; +// } +// logger.info("下发托盘库入库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); +// } + }catch (Exception exception){ + logger.error("下发入库任务发生异常:{}", exception.toString()); + } + } + + /** + * 发送出库任务给WCS + * @param task 任务 + */ + private void sendTasksOutToWcs(Task task) { + /* 检查该库位前一个深度是否存在库存,若存在库存则生成一个移库任务,此任务暂不下发 */ + List thisLocations = locationService.selLocations(new Location(task.getOrigin())); + if(thisLocations == null) { + logger.warn("下发出库任务查询库位详细信息失败,数据库网络连接异常,任务号:{}", task.getTaskId()); + logger.info("下发出库任务查询库位详细信息失败,数据库网络连接异常"); + return; + } + if(thisLocations.isEmpty()) { + logger.warn("下发出库任务查询库位详细信息异常,不存在详细信息,该库位可能不存在,任务号:{}", task.getTaskId()); + logger.info("下发出库任务查询库位详细信息异常,不存在详细信息,该库位可能不存在"); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.EXCEPTION.getCode()); + taskForUpdate.setRemark1("该库位不存在"); + taskService.executeTask(taskForUpdate); + return; + } + Location thisLocation = thisLocations.get(0); // 找出当前库位详细信息 + int depth = thisLocation.getDepth(); + while (depth > 1) { + depth--; + /* 检查该库位有没有任务,若有则退出函数,若没有则检查有没有库存,若没有库存则继续,若有库存则生成一个移库任务,生成之后退出函数 */ + Location beforLocationsQuery = new Location(); + // logger.info("{},{},{},{},{}",thisLocation.getAreaId(),thisLocation.getQueue(),thisLocation.getLine(),thisLocation.getLayer(),depth); + beforLocationsQuery.setAreaId(thisLocation.getAreaId()); + //beforLocationsQuery.setQueue(thisLocation.getQueue()); + beforLocationsQuery.setLine(thisLocation.getLine()); + beforLocationsQuery.setLayer(thisLocation.getLayer()); + beforLocationsQuery.setLocationType(1); + beforLocationsQuery.setDepth(depth); + List beforLocations = locationService.selLocations(beforLocationsQuery); + if(beforLocations == null) { + logger.warn("下发出库任务查询库位详细信息失败,数据库网络连接异常,任务号:{}", task.getTaskId()); + logger.info("下发出库任务查询库位详细信息失败,数据库网络连接异常"); + return; + } + if(beforLocations.isEmpty()) { + logger.info("beforLocations.isEmpty()"); + return; + } + Location beforLocation = beforLocations.get(0); // 前一个库位 + List notCompleteTasks = taskMapper.haveNotCompleteTask(beforLocation.getLocationId()); + if(notCompleteTasks == null) { + logger.info("notCompleteTasks为null"); + return; + } + if(!notCompleteTasks.isEmpty()) { + logger.info("存在未完成的任务,退出函数"); + return; // 存在未完成的任务,退出函数 + } + // 检查是否有库存,因为存在空框所以不在库存表中检验 + Vehicle nextVehicle = new Vehicle(); + nextVehicle.setCurrentLocation(beforLocation.getLocationId()); + List beforVehicleCheckIfEmpty = vehicleMapper.selVehicles(nextVehicle); + if(beforVehicleCheckIfEmpty == null) { + logger.info("beforLocationsCheckIfEmpty == null"); + return; + } + if(beforVehicleCheckIfEmpty.isEmpty()) { + logger.info("位置{}没有框",beforLocation.getLocationId()); + continue; // 没有库存,继续 + } + /* 生成一个移库任务 */ + /* 查找一个空库位 */ + Location emptyLocation = new Location(); + emptyLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + emptyLocation.setAreaId(beforLocation.getAreaId()); + List emptyLocations = locationMapper.selLocations(emptyLocation); + if(emptyLocations == null) { + logger.info("emptyLocations == null"); + return; + } + if(emptyLocations.isEmpty()){ + logger.warn("移库没有可用库位,任务号:{}", task.getTaskId()); + logger.info("移库没有可用库位"); + return; // 移库没有可用库位 + } + Location emptyLocationItem = locationUtils.checkCanUse(emptyLocations); // 取得新库位 + if(emptyLocationItem == null) { + logger.info("emptyLocationItem == null"); + return; // 没有可用库位或者m库位存在干涉 + } + // 锁定旧库位库存 + stockMapper.updateStockStatusWithLocationId(beforLocation.getLocationId(), StockStatus.LOCK.getCode()); + // 锁定新库位 + Location locationForUpdate = new Location(); + locationForUpdate.setLocationId(emptyLocationItem.getLocationId()); + locationForUpdate.setLocationStatus(LocationStatus.OCCUPY.getCode()); + locationMapper.modifyLocation(locationForUpdate); + + //创建移库任务 + Task moveTask = new Task(); + moveTask.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + moveTask.setTaskType(TaskType.MOVE.getCode()); + moveTask.setTaskGroup(task.getTaskGroup()); + moveTask.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); + moveTask.setOrigin(beforLocation.getLocationId()); + moveTask.setDestination(emptyLocationItem.getLocationId()); + moveTask.setPickStand(null); + moveTask.setWeight(0.0); + moveTask.setVehicleNo(beforVehicleCheckIfEmpty.get(0).getVehicleId()); + moveTask.setCreateTime(new Date()); + moveTask.setUserName("WMS"); + if(depth == 2){ + moveTask.setTaskPriority(8); + } else if (depth == 1) { + moveTask.setTaskPriority(9); + } + if (beforVehicleCheckIfEmpty.get(0).getIsEmpty() == 1){ + moveTask.setRemark1("空框"); + }else { + moveTask.setRemark1("带料"); + } + int a = taskService.addTask(moveTask); + if (a == 1 && depth == 2){ + logger.info("生成移库任务成功,任务号:{}", moveTask.getTaskId()); + continue; + } else if (a == 1 && depth == 1) { + return; + } else { + logger.info("生成移库任务失败,任务号:{}", moveTask.getTaskId()); + } + return; + } + if(thisLocation.getAreaId() == 1) { // 宝开立库 + List request = new ArrayList<>(); + // 创建发送的任务 + WcsTask tempTask = new WcsTask(); + tempTask.setTaskId(task.getTaskId()); + tempTask.setTaskType(TaskType.OUT.getCode()); + tempTask.setOrigin(task.getOrigin()); + tempTask.setDestination(task.getDestination()); + tempTask.setVehicleNo(task.getVehicleNo()); + tempTask.setVehicleSize(1); + tempTask.setWeight(task.getWeight() == null ? 0 : task.getWeight()); + tempTask.setPriority(task.getTaskPriority()); + request.add(tempTask); + // 发送任务 + ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_SEND_TASK.getValue(), JSON.toJSONString(request)), ResponseEntity.class); + if (result != null && Objects.equals(ResponseCode.OK.getCode(), result.getCode())) { + logger.info("下发立库出库任务成功,任务ID:{}", tempTask.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + taskService.executeTask(taskForUpdate); + return; + } + logger.info("下发立库出库任务失败,任务ID:{},信息:{},result结果:{}", tempTask.getTaskId(), JSON.toJSONString(result),result.getCode()); + } else { // 四向车库 + String uuid = UUID.randomUUID().toString(); + SendContainerTaskRequest request = new SendContainerTaskRequest(); + request.setRequestid(uuid); + request.setKey(StringUtils.containerMd5(uuid).toUpperCase()); + request.setWmstaskid(task.getTaskId()); + request.setPalletno(task.getVehicleNo()); + request.setTasktype("2"); // 出库 + request.setFromcellno(task.getOrigin()); + request.setTocellno("111"); // ??????? + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CONTAINER_TASK.getValue(), requestString); + //JSONObject jsonResponse = JSON.parseObject(responseString); + ContainerApiLocalResponse result = JSON.parseObject(responseString, ContainerApiLocalResponse.class); + if(result != null && result.getCode().equals("200")) { + logger.info("下发四向车出库任务成功,任务ID:{}", task.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + taskService.executeTask(taskForUpdate); + return; + } + logger.info("下发四向车出库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); + } + } + + /** + * 发送移库任务给WCS + * @param task 任务 + */ + private void sendTasksMoveToWcs(Task task){ + /* 检查该库位前一个深度是否存在库存,若存在库存则生成一个移库任务,此任务暂不下发 */ + List thisLocations = locationService.selLocations(new Location(task.getOrigin())); + if(thisLocations == null) { + logger.info("下发移库任务查询库位详细信息失败,数据库网络连接异常"); + return; + } + if(thisLocations.isEmpty()) { + logger.info("下发移库任务查询库位详细信息异常,不存在详细信息,该库位可能不存在"); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.EXCEPTION.getCode()); + taskForUpdate.setRemark1("该库位不存在"); + taskService.executeTask(taskForUpdate); + return; + } + Location thisLocation = thisLocations.get(0); // 找出当前库位详细信息 + int depth = thisLocation.getDepth(); + while (depth > 1) { + depth--; + /* 检查该库位有没有任务,若有则退出函数,若没有则检查有没有库存,若没有库存则继续,若有库存则生成一个移库任务,生成之后退出函数 */ + Location beforLocationsQuery = new Location(); + // logger.info("{},{},{},{},{}",thisLocation.getAreaId(),thisLocation.getQueue(),thisLocation.getLine(),thisLocation.getLayer(),depth); + beforLocationsQuery.setAreaId(thisLocation.getAreaId()); + //beforLocationsQuery.setQueue(thisLocation.getQueue()); + beforLocationsQuery.setLine(thisLocation.getLine()); + beforLocationsQuery.setLayer(thisLocation.getLayer()); + beforLocationsQuery.setLocationType(1); + beforLocationsQuery.setDepth(depth); + List beforLocations = locationService.selLocations(beforLocationsQuery); + if (beforLocations == null) { + logger.info("下发移库任务查询库位详细信息失败,数据库网络连接异常"); + return; + } + if (beforLocations.isEmpty()) { + logger.info(".isEmpty()"); + return; + } + Location beforLocation = beforLocations.get(0); // 前一个库位 + List notCompleteTasks = taskMapper.haveNotCompleteTask(beforLocation.getLocationId()); + if (notCompleteTasks == null) { + logger.info("eteTasks为null"); + return; + } + if (!notCompleteTasks.isEmpty()) { + return; // 存在未完成的任务,退出函数 + } + } + logger.info("开始发送移库任务给WCS,任务号:{}", task.getTaskId()); + String uuid = UUID.randomUUID().toString(); + SendContainerTaskRequest request = new SendContainerTaskRequest(); + request.setRequestid(uuid); + request.setKey(StringUtils.containerMd5(uuid).toUpperCase()); + request.setWmstaskid(task.getTaskId()); + request.setPalletno(task.getVehicleNo()); + request.setTasktype("3"); // 移库 + request.setFromcellno(task.getOrigin()); + request.setTocellno(task.getDestination()); + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CONTAINER_TASK.getValue(), requestString); + ContainerApiLocalResponse result = JSON.parseObject(responseString, ContainerApiLocalResponse.class); + if(result != null && result.getCode().equals("200")) { + logger.info("下发四向车移库任务成功,任务ID:{}", task.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + taskService.executeTask(taskForUpdate); + return; + } + logger.info("下发四向车移库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); + } + + private void sendTasksMoveToWcs1(Task task) { + /* 检查该库位前一个深度是否存在库存,若存在库存则生成一个移库任务,此任务暂不下发 */ + List thisLocations = locationService.selLocations(new Location(task.getOrigin())); + if(thisLocations == null) { + logger.warn("下发移库任务查询库位详细信息失败,数据库网络连接异常,任务号:{}", task.getTaskId()); + return; + } + if(thisLocations.isEmpty()) { + logger.warn("下发移库任务查询库位详细信息异常,不存在详细信息,该库位可能不存在,任务号:{}", task.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.EXCEPTION.getCode()); + taskForUpdate.setRemark1("该库位不存在"); + taskService.executeTask(taskForUpdate); + return; + } + Location thisLocation = thisLocations.get(0); // 找出当前库位详细信息 + int depth = thisLocation.getDepth(); + while (depth > 1) { + depth--; + /* 检查该库位有没有任务,若有则退出函数,若没有则检查有没有库存,若没有库存则继续,若有库存则生成一个移库任务,生成之后退出函数 */ + Location beforLocationsQuery = new Location(); + beforLocationsQuery.setAreaId(thisLocation.getAreaId()); + beforLocationsQuery.setQueue(thisLocation.getQueue()); + beforLocationsQuery.setLine(thisLocation.getLine()); + beforLocationsQuery.setLayer(thisLocation.getLayer()); + beforLocationsQuery.setDepth(depth); + List beforLocations = locationService.selLocations(beforLocationsQuery); + if(beforLocations == null) { + logger.warn("下发移库任务查询库位详细信息失败,数据库网络连接异常,任务号:{}", task.getTaskId()); + return; + } + if(beforLocations.isEmpty()) { + return; + } + Location beforLocation = beforLocations.get(0); // 前一个库位 + List notCompleteTasks = taskMapper.haveNotCompleteTask(beforLocation.getLocationId()); + if(notCompleteTasks == null) { + return; + } + for(Task notCompleteTask : notCompleteTasks) { + String taskId = notCompleteTask.getTaskId(); + if(!taskId.equals(task.getTaskId())) { + return; + } + } + // 检查是否有库存、 + Stock stockQuery = new Stock(); + stockQuery.setLocationId(beforLocation.getLocationId()); + List stocks = stockService.selStocks(stockQuery); + if(stocks == null) { + return; + } + if(stocks.isEmpty()) { + continue; // 没有库存,继续 + } + /* 生成一个移库任务 */ + /* 查找一个空库位 */ + Location emptyLocation = new Location(); + emptyLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + emptyLocation.setAreaId(beforLocation.getAreaId()); + List emptyLocations = locationMapper.selLocations(emptyLocation); + if(emptyLocations == null) { + return; + } + if(emptyLocations.isEmpty()){ + return; // 移库没有可用库位 + } + Location emptyLocationItem = locationUtils.checkCanUse(emptyLocations); // 取得新库位 + if(emptyLocationItem == null) { + return; // 没有可用库位或者m库位存在干涉 + } + // 锁定旧库位库存 + stockMapper.updateStockStatusWithLocationId(beforLocation.getLocationId(), StockStatus.LOCK.getCode()); + // 锁定新库位 + Location locationForUpdate = new Location(); + locationForUpdate.setLocationId(emptyLocationItem.getLocationId()); + locationForUpdate.setLocationStatus(LocationStatus.OCCUPY.getCode()); + locationMapper.modifyLocation(locationForUpdate); + // 构造移库任务 + Task moveTask = new Task(); + moveTask.setTaskId(UUID.randomUUID().toString()); + moveTask.setTaskGroup(task.getTaskGroup()); + moveTask.setTaskType(TaskType.MOVE.getCode()); + moveTask.setOrigin(beforLocation.getLocationId()); + moveTask.setDestination(emptyLocationItem.getLocationId()); + moveTask.setVehicleNo(stocks.get(0).getVehicleId()); + moveTask.setVehicleSize(0); + moveTask.setWeight(0.0); + moveTask.setTaskPriority(9); + moveTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + taskService.addTask(moveTask); + return; + } + if(thisLocation.getAreaId() == 1) { // 宝开立库 + List request = new ArrayList<>(); + // 创建发送的任务 + WcsTask tempTask = new WcsTask(); + tempTask.setTaskId(task.getTaskId()); + tempTask.setTaskType(TaskType.MOVE.getCode()); + tempTask.setOrigin(task.getOrigin()); + tempTask.setDestination(task.getDestination()); + tempTask.setVehicleNo(task.getVehicleNo()); + tempTask.setVehicleSize(1); + tempTask.setWeight(task.getWeight() == null ? 0 : task.getWeight()); + tempTask.setPriority(task.getTaskPriority()); + request.add(tempTask); + // 发送任务 + ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_SEND_TASK.getValue(), JSON.toJSONString(request)), ResponseEntity.class); + if (result != null && Objects.equals(ResponseCode.OK.getCode(), result.getCode())) { + logger.info("下发立库移库任务成功,任务ID:{}", tempTask.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + taskService.executeTask(taskForUpdate); + return; + } + logger.info("下发立库移库任务失败,任务ID:{},信息:{}", tempTask.getTaskId(), JSON.toJSONString(result)); + } else { + String uuid = UUID.randomUUID().toString(); + SendContainerTaskRequest request = new SendContainerTaskRequest(); + request.setRequestid(uuid); + request.setKey(StringUtils.containerMd5(uuid).toUpperCase()); + request.setWmstaskid(task.getTaskId()); + request.setPalletno(task.getVehicleNo()); + request.setTasktype("3"); // 移库 + request.setFromcellno(task.getOrigin()); + request.setTocellno(task.getDestination()); + String requestString = JSON.toJSONString(request); + String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CONTAINER_TASK.getValue(), requestString); + ContainerApiLocalResponse result = JSON.parseObject(responseString, ContainerApiLocalResponse.class); + if(result != null && result.getCode().equals("200")) { + // logger.info("下发四向车移库任务成功,任务ID:{}", task.getTaskId()); + Task taskForUpdate = new Task(); + taskForUpdate.setTaskId(task.getTaskId()); + taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + taskService.executeTask(taskForUpdate); + return; + } + // logger.info("下发四向车移库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); + } + } + + + + + /** + * 每隔一秒检索一遍任务列表,同时向WCS下发任务 + */ +// @Scheduled(fixedDelay = 1000) + public void executeTasks() { + try { + // 检索任务列表,查询状态为等待状态的任务 + Task taskForQuery = new Task(); + taskForQuery.setTaskStatus(WmsTaskStatus.NEW.getCode()); + List tasks = taskService.selTasks(taskForQuery); + // 相同任务组的任务只发一次 + List taskGroupIds = new LinkedList<>(); + List request = new ArrayList<>(); + if (!tasks.isEmpty()) {// 存在等待中的任务 + for (Task task : tasks) { + if (taskGroupIds.contains(task.getTaskGroup())) {// 该taskGroup的任务已经发送过 + task.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + continue; + } + // 创建发送的任务 + WcsTask tempTask = new WcsTask(); + tempTask.setTaskId(task.getTaskGroup()); + if (TaskType.OUT.getCode().equals(task.getTaskType()) || TaskType.INVENTORY.getCode().equals(task.getTaskType())) { + tempTask.setTaskType(TaskType.OUT.getCode()); + } else { + tempTask.setTaskType(TaskType.IN.getCode()); + } + tempTask.setOrigin(task.getOrigin()); + tempTask.setDestination(task.getDestination()); + tempTask.setVehicleNo(task.getVehicleNo()); + tempTask.setVehicleSize(1); + tempTask.setWeight(task.getWeight() == null ? 0 : task.getWeight()); + tempTask.setPriority(task.getTaskPriority()); + request.add(tempTask); + + taskGroupIds.add(task.getTaskGroup()); + task.setTaskStatus(WmsTaskStatus.WAIT.getCode()); + } + if (request.isEmpty()) { + return; + } + // 发送任务 + ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_SEND_TASK.getValue(), JSON.toJSONString(request)), ResponseEntity.class); + if (result != null && Objects.equals(ResponseCode.OK.getCode(), result.getCode())) { + // 更新任务列表 + for (Task task : tasks) { + // 更新任务 + taskService.executeTask(task); + } + } + } + } catch (Exception exception) { + logger.error("发生异常:{}", exception.getMessage()); + } + } + + /** + * 定期检查设备状态 + * 5秒钟 + */ +// @Scheduled(fixedDelay = 5000) + public void checkEquipmentStatus() { + + } + + /** + * 每天查询一次是否有过期的库存 + * 每天晚上8点执行一次 + */ +// @Scheduled(cron = "0 0 20 * * ?") + public void detectOutOfDateStock() { + logger.info("执行定时任务:查询过期库存"); + List outOfDateStocks = stockService.selStockOutOfDate(); + if (!outOfDateStocks.isEmpty()) { + logger.info("过期库存数量不为0,准备更新过期库存"); + for (Stock outOfDateStock : outOfDateStocks) { + try { + outOfDateStock.setGoodsStatus(GoodsStatus.OVERDUE.getCode()); + stockService.modifyStock(outOfDateStock); + logger.info("过期库存更新成功"); + } catch (Exception e) { + logger.error("过期库存更新异常:{}", e.getMessage()); + } + } + } + } + + /** + * 每天查询一次是否有入库后长期未使用的库存 + * 每天晚上9点执行一次 + */ +// @Scheduled(cron = "0 0 21 * * ?") + public void detectStockLongTimeNoUse() { + logger.info("执行定时任务:查询是否有入库后长期未使用的库存"); + List stocksLongTimeNoUse = stockService.selStockLongTimeNoUse(7); + if (!stocksLongTimeNoUse.isEmpty()) { + logger.info("有入库后长期未使用的库存, 准备更新库存状态"); + for (Stock stockLongTimeNoUse : stocksLongTimeNoUse) { + try { + stockLongTimeNoUse.setGoodsStatus(GoodsStatus.SCRAP.getCode()); + stockService.modifyStock(stockLongTimeNoUse); + logger.info("长时间未使用库存状态更新成功"); + } catch (Exception e) { + logger.error("长时间未使用库存状态更新异常:{}", e.getMessage()); + } + } + } + } + + /** + * 每天查询一次是否有过期记录 + * 每天晚上10点执行一次 + */ + //@Scheduled(cron = "0 0 22 * * ?") + public void deleteOutOfDateData() { + logger.info("执行定时任务:删除过期数据"); + taskRecordService.deleteTaskRecordRegularly(); + } +} \ No newline at end of file diff --git a/wms_serve/src/main/java/com/wms/bussiness/TaskOperation.java b/wms_serve/src/main/java/com/wms/bussiness/TaskOperation.java new file mode 100644 index 0000000..c618c10 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/bussiness/TaskOperation.java @@ -0,0 +1,800 @@ +package com.wms.bussiness; + +import com.alibaba.fastjson2.JSON; +import com.wms.constants.enums.*; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.mes.*; +import com.wms.entity.app.wcs.WmsReceiveTaskResultEntity; +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.table.*; +import com.wms.mapper.*; +import com.wms.service.PartInfoService; +import com.wms.utils.HttpUtils; +import com.wms.utils.WmsUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.Now; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.swing.plaf.synth.Region; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; + + +/** + * 对任务的操作 + */ +@Slf4j +@Component +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class TaskOperation { + + /** + * 库存 Mapper + */ + private final StockMapper stockMapper; + + /** + * 任务表操作类 + */ + private final TaskMapper taskMapper; + + /** + * 库位表操作类 + */ + private final LocationMapper locationMapper; + + private final VehicleMapper vehicleMapper; + + private final OrderOutMapper orderOutMapper; + /** + * 零件 + */ + private final PartInfoService partInfoService; + + /** + * 订单入库 + */ + private final com.wms.mapper.AppOrderInMapper appOrderInMapper; + + + //region 完成任务 + /** + * 完成任务 + * @param task 要完成的任务A21-15-2 + * @return 操作结果 + */ + public boolean completeTask(Task task) { + if(task == null) { + return false; + } + TaskType taskType = TaskType.getTaskType(task.getTaskType()); + if(taskType == null) { + return false; + } + /* 根据任务类型判断 */ + return switch (taskType) { + case IN -> completeInTask(task); + case OUT -> completeOutTask(task); + case INVENTORY -> completeInventoryTask(task); + case MOVE -> completeMoveTask(task); + }; + } + + /** + * 完成入库任务 + * @param task 要完成的入库任务 + * @return 结果 + */ + private boolean completeInTask(Task task) { + /* 找出任务,完成该任务;找出该任务终点,更新库存为OK */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 占掉新库位,生成的时候会占,这里重复操作保护 + Location occupyLocation = new Location(); + occupyLocation.setLocationId(task.getDestination()); + occupyLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + occupyLocation.setVehicleId(task.getVehicleNo()); + locationMapper.modifyLocation(occupyLocation); // 更新库位 + //根据task表的载具号前16位去入库表里面找对应的批次号的入库单数据 数量相等 入库单载具号为空 + // 根据载具号获取入库单入库数据行 + List appOrderIns = appOrderInMapper.selectWithVehicle(task.getVehicleNo()); + if (appOrderIns == null || appOrderIns.isEmpty()) { + log.error("四向车入库完成更新库存失败,任务:{},原因:没有找到入库单入库数据行", task.toLoggerString()); + return false; + } + AppOrderIn appOrderInForCheck = appOrderIns.get(0); + if (appOrderInForCheck.getGoodsId() == null || appOrderInForCheck.getGoodsId().isEmpty()){ + //表示这个为空托盘入库,没有零件号,不记录到库存表中,更新到料箱监控表中。 + Vehicle a = new Vehicle(); + a.setVehicleId(appOrderInForCheck.getVehicleNo()); + a.setCurrentLocation(task.getDestination()); + a.setIsEmpty(1); + a.setVehicleStatus(2); + int b = vehicleMapper.addVehicle(a); + if (b == 0){ + log.error("四向车空托盘入库完成更新料箱监控失败,任务:{},原因:更新载具为空状态失败", task.toLoggerString()); + return false; + }else{ + log.info("四向车空托盘入库完成更新料箱监控成功,任务:{}", task.toLoggerString()); + } + //删除入库单 + int dele = appOrderInMapper.delete(appOrderInForCheck.getRowId()); + if (dele == 0){ + log.info("四向车空托入库删除订单入库单数据行失败,任务:{},原因:删除失败", task.toLoggerString()); + }else if (dele == 1){ + log.info("四向车空托入库删除订单入库单数据行成功,任务:{}", task.toLoggerString()); + } + }else{ + // 将入库数据行数据插入库存表 + for (AppOrderIn appOrderIn : appOrderIns){ + //将批次号一部分裁下来做生产日期 + Stock addStock = new Stock(); + addStock.setStockId(WmsUtils.generateUUIDString()); + addStock.setWarehouseName("四向车立体库"); + addStock.setLocationId(task.getDestination()); + //addStock.setLocationId(appOrderIn.getVehicleNo()); + addStock.setVehicleId(appOrderIn.getVehicleNo()); + addStock.setGoodsId(appOrderIn.getGoodsId()); + addStock.setGoodsName(""); + addStock.setBatchNo(""); + addStock.setAvailableNum(appOrderIn.getGoodsNum().intValue()); + addStock.setRealNum(appOrderIn.getGoodsNum().intValue()); + addStock.setProviderId(""); + addStock.setProviderName(""); + //addStock.setProductionDate(null); + addStock.setExpirationDate(null); + addStock.setStockStatus(0); + addStock.setGoodsStatus(null); + addStock.setCreateTime(new Date()); + addStock.setLastUpdateTime(null); + addStock.setLastUpdateUser(null); + addStock.setRemark(appOrderIn.getRemark()); + addStock.setProductionDate(null); + //添加到库存里 + if (Objects.equals(addStock.getVehicleId(), task.getVehicleNo())){ + int a = stockMapper.addStock(addStock);//?????? + if (a == 0){//表示添加库存失败 + log.info("四向车入库完成更新库存失败,任务:{},原因:添加库存失败", task.toLoggerString()); + for (int i = 0; i < 5; i++) { + int b =stockMapper.addStock(addStock); + if (b != 0){ + log.info("四向车入库更新库存重试成功,任务:{}", task.toLoggerString()); + break; + } + } + }else { + log.info("四向车入库完成更新库存成功,任务:{}", task.toLoggerString()); + } + int b = appOrderInMapper.delete(appOrderIn.getRowId()); + if (b == 0){ + log.info("四向车入库删除订单入库数据行失败,任务:{},原因:删除失败", task.toLoggerString()); + }else if (b == 1){ + log.info("四向车入库删除订单入库数据行成功,任务:{}", task.toLoggerString()); + } + + }else{ + log.error("四向车入库完成更新库存失败,任务:{},原因:载具号前16位与入库单载具号前16位不一致", task.toLoggerString()); + } + } + Vehicle ab = new Vehicle(); + ab.setVehicleId(appOrderIns.get(0).getVehicleNo()); + ab.setCurrentLocation(task.getDestination()); + ab.setIsEmpty(0); + ab.setVehicleStatus(2); + int bd = vehicleMapper.addVehicle(ab); + if (bd == 0){ + log.error("四向车入库完成更新料箱监控失败,任务:{},原因:更新载具为空状态失败", task.toLoggerString()); + return false; + }else{ + log.info("四向车入库完成更新料箱监控成功,任务:{}", task.toLoggerString()); + } + } + return true; + } + +// /** +// * 发送 mes 上架入库信息 +// * @param stock 库存记录 +// * @param locationId 库位 +// */ +// private void sendMesPutInGoods(Stock stock, String locationId) { +// try { +// SendMesPutInGoodsRequest request = new SendMesPutInGoodsRequest(); +// request.setGuid(stock.getStockId()); +// request.setLosnr(stock.getBatchNo()); +// request.setItemCode(stock.getGoodsId()); +// request.setLotQty(String.valueOf(stock.getRealNum())); +// request.setBinCode(locationId); +// String requestString = JSON.toJSONString(request); +// String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_IN.getValue(), requestString); +// MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); +// if(result != null && result.getTransFlag().equals(1)) { +// log.info("发送MES入库上架成功,信息:{}", requestString); +// } +// log.warn("发送MES入库上架失败,信息:{},返回信息:{}", requestString, responseString); +// }catch (Exception e){ +// log.error("发送MES入库上架失败异常,信息:{}", e.getMessage()); +// } +// } + +// private void sendMesLocation(Stock stock, String locationId) { +// try { +// SendMesStockRequest request = new SendMesStockRequest(); +// request.setGuid(stock.getStockId()); +// request.setWarehouse(stock.getWarehouseName()); +// request.setItemCode(stock.getGoodsId()); +// request.setLosnr(stock.getBatchNo()); +// request.setLotQty(Integer.toString(stock.getAvailableNum())); +// request.setUnit(null); +// request.setBinCode(locationId); +// request.setVehicleNo(stock.getVehicleId()); +// String requestString = JSON.toJSONString(request); +// String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_STOCK.getValue(), requestString); +// MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); +// if (result != null && result.getTransFlag().equals(1)){ +// log.info("发送MES库存成功,信息:{}", requestString); +// }else { +// log.warn("发送MES库存失败,信息:{},返回信息:{}", requestString, responseString); +// } +// }catch (Exception e){ +// log.error("发送MES库存失败异常,信息:{}", e.getMessage()); +// } +// } + + + /** + * 完成出库任务 + * @param task 要完成的出库任务 + * @return 执行结果 + */ + private boolean completeOutTask(Task task) { + /* 找出任务,完成该任务;找出该任务终点,删除库存;释放库位 */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getOrigin()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + if (Objects.equals(task.getRemark1(), "手动出库")){ + // 根据起点拉取库位库存,剩下数量不为零的数据搬运到入库单 生成回库任务,删除该库位所有库存 + List stocks = stockMapper.selStocksByLocationId(task.getOrigin()); + if (stocks == null || stocks.isEmpty()){ + log.error("拉取库存失败,任务:{},原因:没有找到库存数据", task.toLoggerString()); + return false; + } + int totalNum = stocks.size(); + if (totalNum > 1){ + for (Stock stock : stocks){ + if (stock.getAvailableNum() > 0){ + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(WmsUtils.generateUUIDString()); + appOrderIn.setGuid(stock.getStockId()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(stock.getBatchNo()); + appOrderIn.setVehicleNo(task.getVehicleNo()); + appOrderIn.setGoodsId(stock.getGoodsId()); + appOrderIn.setGoodsNum(BigDecimal.valueOf(stock.getAvailableNum())); + appOrderIn.setWareHouse("A"); + if (stock.getVehicleId() != null && !stock.getVehicleId().isEmpty()){ + appOrderIn.setOrderStatus(2); + }else { + appOrderIn.setOrderStatus(0); + } + //appOrderIn.setOrderStatus(2); + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("BACK"); + appOrderIn.setRemark("回库"); + int isSuessInsert = appOrderInMapper.insert(appOrderIn); + if(isSuessInsert > 0){ + log.info("多物料回库任务生成成功,任务:{}", task.toLoggerString()); + }else{ + log.error("多物料回库任务生成失败,任务:{}", task.toLoggerString()); + } + } + } + } else{ + for (Stock stock : stocks){ + if (stock.getAvailableNum() > 0){ + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(WmsUtils.generateUUIDString()); + appOrderIn.setGuid(stock.getStockId()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(stock.getBatchNo()); + appOrderIn.setVehicleNo(task.getVehicleNo()); + appOrderIn.setGoodsId(stock.getGoodsId()); + appOrderIn.setGoodsNum(BigDecimal.valueOf(stock.getAvailableNum())); + appOrderIn.setWareHouse("A"); + if (stock.getVehicleId() != null && !stock.getVehicleId().isEmpty()){ + appOrderIn.setOrderStatus(2); + }else { + appOrderIn.setOrderStatus(0); + } + //appOrderIn.setOrderStatus(2); + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("BACK"); + appOrderIn.setRemark("回库"); + int isSuessInsert = appOrderInMapper.insert(appOrderIn); + if(isSuessInsert > 0){ + log.info("回库任务生成成功,任务:{}", task.toLoggerString()); + }else{ + log.error("回库任务生成失败,任务:{}", task.toLoggerString()); + } + }else{ + log.error("库存数量为零,即将生成空托盘回库任务"); + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(UUID.randomUUID().toString()); + appOrderIn.setGuid(UUID.randomUUID().toString()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(null); + appOrderIn.setVehicleNo(task.getVehicleNo()); + appOrderIn.setGoodsId(null); + appOrderIn.setGoodsNum(null); + appOrderIn.setWareHouse("A"); + appOrderIn.setOrderStatus(0); + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("WMS"); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setRemark("空托盘入库"); + //appOrderIn.setProductionDate(request.abcSelect); + int a = appOrderInMapper.insert(appOrderIn); + if (a > 0){ + log.info("空托盘回库任务生成成功,任务:{}", task.toLoggerString()); + }else{ + log.error("空托盘回库任务生成失败,任务:{}", task.toLoggerString()); + } + } + } + } + //出库完成删除出库单 + int deleteOrderOut = orderOutMapper.deleteOrderOut(task.getPickStand()); + if (deleteOrderOut > 0){ + log.info("出库单删除成功,任务:{}", task.toLoggerString()); + }else{ + log.error("出库单删除失败,任务:{}", task.toLoggerString()); + } + //出库完成发送mes + Stock checkIsExist = new Stock(); + checkIsExist.setLocationId(task.getOrigin()); + List checkIsExistListResult = stockMapper.selStocks(checkIsExist); + //List stockUseSend = new ArrayList<>(); + if (checkIsExistListResult == null || checkIsExistListResult.isEmpty()){ + log.info("没有找到对应的数据,表中数据为空,信息:{}", task.toLoggerString()); + return false; + } + Vehicle ab = new Vehicle(); + ab.setVehicleId(checkIsExistListResult.get(0).getVehicleId()); + ab.setCurrentLocation(task.getOrigin()); + ab.setIsEmpty(0); + ab.setVehicleStatus(2); + int bd = vehicleMapper.deleteVehicle(ab); + if (bd == 0){ + log.error("四向车出库完成更新料箱监控失败,任务:{},原因:更新载具为空状态失败", task.toLoggerString()); + //return false; + }else{ + log.info("四向车出库完成更新料箱监控成功,任务:{}", task.toLoggerString()); + } + // 删除库存 + int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); + if(updateStock > 0){ + log.info("出库完成删除库存成功,任务:{}", task.toLoggerString()); + return true; + }else{ + log.error("出库完成删除库存失败,任务:{}", task.toLoggerString()); + return false; + } + } else if (Objects.equals(task.getRemark1(), "空托盘出库")) { + //出库完成删除出库单 + int deleteOrderOut = orderOutMapper.deleteOrderOut(task.getPickStand()); + if (deleteOrderOut > 0){ + log.info("空托盘出库单删除成功,任务:{}", task.toLoggerString()); + }else{ + log.error("空托盘出库单删除失败,任务:{}", task.toLoggerString()); + } + Vehicle ab = new Vehicle(); + ab.setVehicleId(task.getVehicleNo()); + ab.setCurrentLocation(task.getOrigin()); + ab.setIsEmpty(1); + ab.setVehicleStatus(2); + int bd = vehicleMapper.deleteVehicle(ab); + if (bd == 0){ + log.error("四向车空托出库完成更新料箱监控失败,任务:{},原因:更新载具为空状态失败", task.toLoggerString()); + return false; + }else{ + log.info("四向车空托出库完成更新料箱监控成功,任务:{}", task.toLoggerString()); + return true; + } + } + log.error("不处理的出库任务,表中数据为空,信息:{}", task.toLoggerString()); + return false; + } + + + /** + * 发送 mes 出库下架信息 + * @param stocks 库存记录 + * @param task 任务 + */ +// private void sendMesPutOutGoods(List stocks, Task task) { +// try { +// SendMesPutOutGoodsRequest request = new SendMesPutOutGoodsRequest(); +// request.setGuid(task.getTaskId()); +// request.setTransferNo(task.getTaskGroup()); +// if (Objects.equals(task.getRemark1(), "手动出库")){ +// request.setType(4); +// }else{ +// request.setType(task.getTaskType()); +// } +// List rows = new ArrayList<>(); +// int lint = 1; +// if (stocks == null || stocks.isEmpty()){ +// log.error("发送MES出库下架失败,没有收到ROW所需要的数据,信息:{}", task.toLoggerString()); +// return; +// } +// for(Stock stock : stocks) { +// SendMesPutOutGoodsRow row = new SendMesPutOutGoodsRow(); +// row.setTransferLine(String.valueOf(lint)); +// row.setLosnr(stock.getBatchNo()); +// row.setVehicleNo(stock.getVehicleId()); +// row.setWarehouse(stock.getWarehouseName()); +// row.setLotQty(String.valueOf(stock.getRealNum() - stock.getAvailableNum())); +// rows.add(row); +// lint++; +// } +// request.setRow(rows); +// String requestString = JSON.toJSONString(request); +// String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_OUT.getValue(), requestString); +// MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); +// if(result != null && result.getTransFlag().equals(1)) { +// log.info("发送MES出库下架成功,信息:{}", requestString); +// }else{ +// log.warn("发送MES出库下架失败,信息:{},返回信息:{}", requestString, responseString); +// } +// }catch (Exception e){ +// log.error("发送MES出库下架失败异常,信息:{}", e.getMessage()); +// } +// } + + + + /** + * 完成盘点任务 + * @param task 任务 + * @return 完成结果 + */ + private boolean completeInventoryTask(Task task) { + /* 找出任务,完成该任务;找出该任务终点,删除库存;释放库位 */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getOrigin()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 根据起点拉取库位库存,剩下数量不为零的数据搬运到入库单 生成回库任务,删除该库位所有库存 + List stocks = stockMapper.selStocksByLocationId(task.getOrigin()); + if (stocks == null || stocks.isEmpty()){ + log.error("完成盘点出库拉取库存失败,任务:{},原因:没有找到库存数据", task.toLoggerString()); + return false; + } + for (Stock stock : stocks){ + if (stock.getAvailableNum() > 0){ + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(WmsUtils.generateUUIDString()); + appOrderIn.setGuid(stock.getStockId()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(stock.getBatchNo()); + appOrderIn.setVehicleNo(task.getVehicleNo()); + appOrderIn.setGoodsId(stock.getGoodsId()); + appOrderIn.setGoodsNum(BigDecimal.valueOf(stock.getAvailableNum())); + appOrderIn.setWareHouse(stock.getWarehouseName()); + if (stock.getVehicleId() != null && !stock.getVehicleId().isEmpty()){ + appOrderIn.setOrderStatus(2); + }else { + appOrderIn.setOrderStatus(0); + } + //appOrderIn.setOrderStatus(2); + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("BACK"); + appOrderIn.setRemark("盘点回库"); + int isSuessInsert = appOrderInMapper.insert(appOrderIn); + if(isSuessInsert > 0){ + log.info("盘点回库任务生成成功,任务:{}", task.toLoggerString()); + }else{ + log.error("盘点回库任务生成失败,任务:{}", task.toLoggerString()); + } + } + } + // 盘点出库完成发送mes +// Stock checkIsExist = new Stock(); +// checkIsExist.setLocationId(task.getOrigin()); +// List checkIsExistListResult = stockMapper.selStocks(checkIsExist); +// sendMesInventoryGoods(checkIsExistListResult, task); +// Stock addStock = stocks.get(0); +// addStock.setAvailableNum(0); + // 发送库存接口给mes + //sendMesLocation(addStock, task.getOrigin()); + // 删除库存???? + int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); + if(updateStock > 0){ + log.info("盘点出库完成删除库存成功,任务:{}", task.toLoggerString()); + return true; + } + return false; + } + + +// /** +// * 完成盘点任务 +// * @param task 任务 +// */ +// private void sendMesInventoryGoods(List stocks, Task task) { +// try { +// SendMesGoodsInventoryRequest request = new SendMesGoodsInventoryRequest(); +// request.setGuid(task.getTaskId()); +// request.setInventoryNo(task.getTaskGroup()); +// +// List rows = new ArrayList<>(); +// for(Stock stock : stocks) { +// SendMesGoodsInventoryRow row = new SendMesGoodsInventoryRow(); +// row.setLosnr(stock.getBatchNo()); +// row.setWarehouse(stock.getWarehouseName()); +// row.setLotQty(String.valueOf(stock.getRealNum())); +// rows.add(row); +// } +// request.setRow(rows); +// String requestString = JSON.toJSONString(request); +// String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_INVENTORY.getValue(), requestString); +// MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); +// if(result != null && result.getTransFlag().equals(1)) { +// log.info("发送MES盘点执行成功,信息:{}", requestString); +// }else{ +// log.warn("发送MES盘点执行失败,信息:{},返回信息:{}", requestString, responseString); +// } +// }catch (Exception e){ +// log.error("发送MES盘点执行失败异常,信息:{}", e.getMessage()); +// } +// } + + /** + * 完成移库任务 + * @param task 任务 + * @return 完成结果 + */ + private boolean completeMoveTask(Task task) { + /* 找出任务,更新任务为完成;释放原库位;更新库存到新库位 */ + // 完成任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 完成任务 + // 释放原库位 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getOrigin()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 占掉新库位,生成的时候会占,这里重复操作保护 + Location occupyLocation = new Location(); + occupyLocation.setLocationId(task.getDestination()); + occupyLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + occupyLocation.setVehicleId(task.getVehicleNo()); + locationMapper.modifyLocation(occupyLocation); // 更新库位 + String checkUse = task.getRemark1(); +// if (Objects.equals(checkUse, "空框")){ + //只需要更新料箱监控 + Vehicle vehicle = new Vehicle(); + vehicle.setCurrentLocation(task.getDestination()); + vehicle.setVehicleId(task.getVehicleNo()); + int a = vehicleMapper.modifyVehicle(vehicle); + if (a > 0){ + log.info("更新料箱监控成功"); + }else{ + log.info("更新料箱监控失败"); + } +// } + if (Objects.equals(checkUse, "带料")) { + //需要额外更新库存 + int updatedLocation = stockMapper.updateLocationAndStatus(task.getOrigin(), task.getDestination(), StockStatus.OK.getCode()); + if(updatedLocation > 0){ + log.info("移库库位更新成功,任务:{}", task.toLoggerString()); + return true; + }else { + log.info("移库库位更新失败,任务:{}", task.toLoggerString()); + } + } else if (Objects.equals(checkUse, "空框")) { + log.info("空框移库库位更新成功"); + return true; + } + // 更新库位 + return false; + } + +// /** +// * 完成移库任务 +// * @param task 任务 +// * @return 完成结果 +// */ +// private void sendMesPutMoveGoods(Stock stock, Task task) { +// try { +// SendMesGoodsMoveRequest request = new SendMesGoodsMoveRequest(); +// request.setGuid(stock.getStockId()); +// request.setLosnr(stock.getBatchNo()); +// request.setFBinCode(task.getOrigin()); +// request.setLotQty(String.valueOf(stock.getRealNum())); +// request.setTBinCode(task.getDestination()); +// String requestString = JSON.toJSONString(request); +// String responseString = HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_MES_MOVE.getValue(), requestString); +// MesApiLocalResponse result = JSON.parseObject(responseString, MesApiLocalResponse.class); +// if(result != null && result.getTransFlag().equals(1)) { +// log.info("发送MES批次调整(移库)成功,信息:{}", requestString); +// } +// log.warn("发送MES批次调整(移库)失败,信息:{},返回信息:{}", requestString, responseString); +// }catch (Exception e){ +// log.error("发送MES批次调整(移库)失败异常,信息:{}", e.getMessage()); +// } +// } + + + + + //endregion + + + + //region 取消任务 + + /** + * 取消任务 + * @param task 要完成的任务 + * @return 操作结果 + */ + public boolean cancelTask(Task task) { + if(task == null) { + return false; + } + TaskType taskType = TaskType.getTaskType(task.getTaskType()); + if(taskType == null) { + return false; + } + /* 根据任务类型判断 */ + return switch (taskType) { + case IN -> cancelInTask(task); + case OUT -> cancelOutTask(task); + case INVENTORY -> cancelInventoryTask(task); + case MOVE -> cancelMoveTask(task); + }; + } + + /** + * 取消入库任务 + * @param task 要取消的入库任务 + * @return 结果 + */ + private boolean cancelInTask(Task task) { + /* 找出任务,取消该任务;找出该任务终点,更新库存为OK */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getDestination()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 更新库存为 ok ??????? + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("入库取消更新库存成功,任务:{}", task.toLoggerString()); + return true; + } + return false; + } + + /** + * 取消出库任务 + * @param task 要取消的出库任务 + * @return 执行结果 + */ + private boolean cancelOutTask(Task task) { + /* 找出任务,取消该任务;找出该任务终点,删除库存;释放库位 */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 更新库存为 ok + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("出库取消更新库存成功,任务:{}", task.toLoggerString()); + return true; + } + return false; + } + + /** + * 取消盘点任务 + * @param task 任务 + * @return 取消结果 + */ + private boolean cancelInventoryTask(Task task) { + /* 找出任务,取消该任务;找出该任务终点,删除库存;释放库位 */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 更新库存为 ok + int updateStock = stockMapper.updateStockStatusWithLocationId(task.getDestination(), StockStatus.OK.getCode()); + if(updateStock > 0){ + log.info("盘点出库取消更新库存成功,任务:{}", task.toLoggerString()); + return true; + } + return false; + } + + /** + * 取消移库任务 + * @param task 任务 + * @return 取消结果 + */ + private boolean cancelMoveTask(Task task) { + /* 找出任务,更新任务为取消;释放新库位;更新库存为OK */ + // 取消任务 + Task completeTask = new Task(); + completeTask.setTaskId(task.getTaskId()); + completeTask.setTaskStatus(WmsTaskStatus.CANCEL.getCode()); + completeTask.setFinishTime(new Date()); + taskMapper.executeTask(completeTask); // 取消任务 + // 释放库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(task.getDestination()); + updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + updateLocation.setVehicleId(""); + locationMapper.modifyLocation(updateLocation); // 更新库位为空 + // 更新库位 + int updatedLocation = stockMapper.updateStockStatusWithLocationId(task.getOrigin(), StockStatus.OK.getCode()); + if(updatedLocation > 0){ + log.info("移库取消库位状态更新成功,任务:{}", task.toLoggerString()); + return true; + } + return false; + } + + + //endregion + + + + +} diff --git a/wms_serve/src/main/java/com/wms/bussiness/TaskTimer.java b/wms_serve/src/main/java/com/wms/bussiness/TaskTimer.java new file mode 100644 index 0000000..3b02e83 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/bussiness/TaskTimer.java @@ -0,0 +1,24 @@ +package com.wms.bussiness; + +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +/** + * 任务定时器 + */ +@Component +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class TaskTimer { + + + + + + + + + + +} diff --git a/wms_serve/src/main/java/com/wms/config/InitLocalConfig.java b/wms_serve/src/main/java/com/wms/config/InitLocalConfig.java new file mode 100644 index 0000000..d9d7758 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/config/InitLocalConfig.java @@ -0,0 +1,22 @@ +package com.wms.config; + +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(1) +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class InitLocalConfig implements ApplicationRunner { + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Override + public void run(ApplicationArguments args) throws Exception { + logger.info("加载设置到内存中..."); + logger.info("加载配置到内存中..."); + } +} diff --git a/wms_serve/src/main/java/com/wms/config/PageHelperConfig.java b/wms_serve/src/main/java/com/wms/config/PageHelperConfig.java new file mode 100644 index 0000000..b908a7a --- /dev/null +++ b/wms_serve/src/main/java/com/wms/config/PageHelperConfig.java @@ -0,0 +1,23 @@ +package com.wms.config; + +import com.github.pagehelper.PageHelper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Properties; + +@Configuration +public class PageHelperConfig { + @Bean + public PageHelper pageHelper() { + PageHelper pageHelper = new PageHelper(); + //添加配置,也可以指定文件路径 + Properties p = new Properties(); + p.setProperty("helperDialect", "mysql"); + p.setProperty("reasonable", "true"); + p.setProperty("supportMethodsArguments", "true"); + p.setProperty("params", "count=countSql"); + pageHelper.setProperties(p); + return pageHelper; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/WmsConstants.java b/wms_serve/src/main/java/com/wms/constants/WmsConstants.java new file mode 100644 index 0000000..e3170e8 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/WmsConstants.java @@ -0,0 +1,61 @@ +package com.wms.constants; + +import java.math.BigDecimal; +import java.util.Map; + +import com.google.common.collect.ImmutableMap; +import com.wms.constants.enums.WcsTaskStatus; +import com.wms.constants.enums.WmsTaskStatus; + +/** + * WMS系统所需的常量 + * @author 梁州 + * @date 2023/2/13 + */ +public class WmsConstants { + + public static String EMPTY_STRING = ""; + + public static BigDecimal NUMBER_ONE = BigDecimal.valueOf(1); + + public static String ROOT_MENU_ID = "0"; + + + /** + * 虚拟库位设备号 + */ + public static Integer VIRTUAL_LOCATION_EQUIP_ID = 11; + + /** + * 入库库位类型:虚拟库位 + */ + public static String VIRTUAL_LOCATION_IN = "0"; + + /** + * 虚拟库位库区编码 + */ + public static int VIRTUAL_LOCATION_AREA_ID = 99; + + /** + * 空托盘编号 + */ + public static String EMPTY_STOCK_GOODS_ID = "000000000"; + /** + * 空托盘批次号 + */ + public static String EMPTY_STOCK_BATCH_NO = "EMPTY"; + + /** + * 设备号对应入库口 + */ + public static Map LOCATOR_AREA_MAP = ImmutableMap.builder() + .put(WcsTaskStatus.WAIT.getCode(), WmsTaskStatus.WAIT.getCode()) + .put(WcsTaskStatus.RUN.getCode(), WmsTaskStatus.RUN.getCode()) + .put(WcsTaskStatus.LEAVE.getCode(), WmsTaskStatus.RUN.getCode()) + .put(WcsTaskStatus.PARK.getCode(), WmsTaskStatus.RUN.getCode()) + .put(WcsTaskStatus.ARRIVE.getCode(), WmsTaskStatus.RUN.getCode()) + .put(WcsTaskStatus.FINISH.getCode(), WmsTaskStatus.FINISH.getCode()) + .put(WcsTaskStatus.CANCEL.getCode(), WmsTaskStatus.CANCEL.getCode()) + .put(WcsTaskStatus.EXCEPTION.getCode(), WmsTaskStatus.EXCEPTION.getCode()) + .build(); +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/GoodsStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/GoodsStatus.java new file mode 100644 index 0000000..e132ec1 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/GoodsStatus.java @@ -0,0 +1,29 @@ +package com.wms.constants.enums; + +/** + * 物料状态枚举 + */ +public enum GoodsStatus { + OK(0, "合格"), + BAD(1, "不合格"), + DELAY(2, "延期"), + OVERDUE(3, "过期"), + SCRAP(5, "长时间未使用"); + + private final Integer code; + + private final String value; + + GoodsStatus(Integer code, String value) { + this.code = code; + this.value = value; + } + + public Integer getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/KateTaskStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/KateTaskStatus.java new file mode 100644 index 0000000..9bc5846 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/KateTaskStatus.java @@ -0,0 +1,25 @@ +package com.wms.constants.enums; + +public enum KateTaskStatus { + NEW(0, "待下发"), + WAIT(1, "已下发"), + RUN(2, "执行中"), + PICKING(3, "正在拣货"), + FINISH(5, "任务完成"); + + private final Integer code; + private final String name; + + KateTaskStatus(Integer code, String name) { + this.code = code; + this.name = name; + } + + public Integer getCode() { + return code; + } + + public String getName() { + return name; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/LocationStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/LocationStatus.java new file mode 100644 index 0000000..e034378 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/LocationStatus.java @@ -0,0 +1,27 @@ +package com.wms.constants.enums; + +/** + * 库位状态枚举 + * /// 托盘状态和站台状态通用 + */ +public enum LocationStatus { + EMPTY(0, "空闲"), + OCCUPY(1, "占用"); + + private final Integer code; + + private final String value; + + LocationStatus(Integer code, String value) { + this.code = code; + this.value = value; + } + + public Integer getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/OrderCheckStatusEnum.java b/wms_serve/src/main/java/com/wms/constants/enums/OrderCheckStatusEnum.java new file mode 100644 index 0000000..086c39a --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/OrderCheckStatusEnum.java @@ -0,0 +1,28 @@ +package com.wms.constants.enums; + +import lombok.Getter; + +/** + * 盘点表状态枚举 + */ +@Getter +public enum OrderCheckStatusEnum { + + CREATED(0, "已创建"), + + CHECKING(1, "盘点中"), + + CHECKED(2, "已盘点"), + + CANCELED(3, "已取消"); + + + private final int code; + private final String desc; + + OrderCheckStatusEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/OrderInStatusEnum.java b/wms_serve/src/main/java/com/wms/constants/enums/OrderInStatusEnum.java new file mode 100644 index 0000000..2889e62 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/OrderInStatusEnum.java @@ -0,0 +1,26 @@ +package com.wms.constants.enums; + +import lombok.Data; +import lombok.Getter; + +/** + * 订单入库状态枚举 + * + * @author 菻蔃 + */ +@Getter +public enum OrderInStatusEnum { + CREATE(0, "创建"), + IN(1, "入库中"), + BINDING(2, "已绑定"), + ; + + private final int code; + private final String desc; + + OrderInStatusEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/OrderOutStatusEnum.java b/wms_serve/src/main/java/com/wms/constants/enums/OrderOutStatusEnum.java new file mode 100644 index 0000000..44bd213 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/OrderOutStatusEnum.java @@ -0,0 +1,22 @@ +package com.wms.constants.enums; + +import lombok.Getter; + +/** + * 出库单状态的枚举 + */ +@Getter +public enum OrderOutStatusEnum { + + CREATED(0, "已创建"), + RUNNING(1, "执行中"); + + + private final int code; + private final String desc; + + OrderOutStatusEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/ResponseCode.java b/wms_serve/src/main/java/com/wms/constants/enums/ResponseCode.java new file mode 100644 index 0000000..92fc841 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/ResponseCode.java @@ -0,0 +1,27 @@ +package com.wms.constants.enums; + +/** + * 接口响应码枚举 + */ +public enum ResponseCode { + OK(0, "正常"), + WARNING(200, "警告"), + ERROR(999, "异常"); + + private final Integer code; + + private final String value; + + ResponseCode(Integer code, String value) { + this.code = code; + this.value = value; + } + + public Integer getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/StockStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/StockStatus.java new file mode 100644 index 0000000..1916518 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/StockStatus.java @@ -0,0 +1,34 @@ +package com.wms.constants.enums; + +/** + * 库存状态枚举 + */ +public enum StockStatus { + WAIT_IN(-2, "待入库"), + IN_ING(-1, "正在入库"), + OK(0, "库存正常"), + OUT(1, "准备出库"), + MOVING(2, "正在出库"), + TRANS(3, "出库完成"), + PICKING(4, "站台拣货中"), + INVENTORY_OUT(5, "站台盘点中"), + BACKING(6, "正在回库"), + LOCK(9, "库存锁定"); + + private final Integer code; + + private final String value; + + StockStatus(Integer code, String value) { + this.code = code; + this.value = value; + } + + public Integer getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/TaskType.java b/wms_serve/src/main/java/com/wms/constants/enums/TaskType.java new file mode 100644 index 0000000..e46a232 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/TaskType.java @@ -0,0 +1,37 @@ +package com.wms.constants.enums; + +/** + * 任务类型枚举 + */ +public enum TaskType { + IN(1, "入库"), + OUT(2, "出库"), + INVENTORY(3, "盘点"), + MOVE(9, "移库"); + + private final Integer code; + + private final String value; + + TaskType(Integer code, String value) { + this.code = code; + this.value = value; + } + + public Integer getCode() { + return code; + } + + public String getValue() { + return value; + } + + public static TaskType getTaskType(Integer code) { + for (TaskType taskType : TaskType.values()) { + if (taskType.getCode().equals(code)) { + return taskType; + } + } + return null; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/UrlEnums.java b/wms_serve/src/main/java/com/wms/constants/enums/UrlEnums.java new file mode 100644 index 0000000..3f57d6d --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/UrlEnums.java @@ -0,0 +1,31 @@ +package com.wms.constants.enums; +//172.21.80.151 +public enum UrlEnums { + URL_WMS_TO_WCS_SEND_TASK("WMS向WCS发送任务", "http://172.21.80.151:18990/api/wms/wmsTask/setStackerTask"), + URL_WMS_TO_WCS_CHANGE_TASK("WMS请求变更任务状态", "http://172.21.80.151:18990/api/Wms/WmsTask/ChangeTaskStatus"), + URL_WMS_TO_WCS_CONTAINER_TASK("WMS向四向车发送任务","http://192.168.16.53:9991/api/Wcs/PushTask"), + URL_WMS_TO_WCS_CONTAINERIN_TASK("WMS向四向车发送入库任务","http://192.168.16.53:19990/api/container/createInstoreTask"); + //URL_WMS_TO_MES_IN("扫码上架", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/LotGround"), + //URL_WMS_TO_MES_OUT("批次出库", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/ReceiptOut"), + //URL_WMS_TO_MES_INVENTORY("盘点执行", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/InventoryResult"), + //URL_WMS_TO_MES_STOCK("库存", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/WMSStorage"); + //URL_WMS_TO_MES_MOVE("批次调整", "http://172.21.73.210:9000/Asimco/vmesserver/wms_interface/LotAD"); + + + + private final String description; + private final String value; + + UrlEnums(String description, String value) { + this.description = description; + this.value = value; + } + + public String getDescription() { + return description; + } + + public String getValue() { + return value; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/VehicleStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/VehicleStatus.java new file mode 100644 index 0000000..7a17731 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/VehicleStatus.java @@ -0,0 +1,27 @@ +package com.wms.constants.enums; + +/** + * 载具状态 + */ +public enum VehicleStatus { + IN(1, "入库中"), + ON(2, "在库中"), + OUT(3, "出库中"); + + private final Integer code; + + private final String value; + + VehicleStatus(Integer code, String value) { + this.code = code; + this.value = value; + } + + public Integer getCode() { + return code; + } + + public String getValue() { + return value; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/WcsTaskStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/WcsTaskStatus.java new file mode 100644 index 0000000..5c15ec7 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/WcsTaskStatus.java @@ -0,0 +1,31 @@ +package com.wms.constants.enums; + +/** + * Wcs任务状态的枚举 + */ +public enum WcsTaskStatus { + WAIT(1, "任务排队中"), + RUN(2, "任务开始执行"), + LEAVE(3, "任务已经离开初始位置"), + PARK(4, "任务到达中间点"), + ARRIVE(5, "任务到达目的地"), + FINISH(100, "任务完成"), + CANCEL(998, "任务取消"), + EXCEPTION(999, "任务异常"); + + private final Integer code; + private final String name; + + WcsTaskStatus(Integer code, String name) { + this.code = code; + this.name = name; + } + + public Integer getCode() { + return code; + } + + public String getName() { + return name; + } +} diff --git a/wms_serve/src/main/java/com/wms/constants/enums/WmsTaskStatus.java b/wms_serve/src/main/java/com/wms/constants/enums/WmsTaskStatus.java new file mode 100644 index 0000000..1e24d71 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/constants/enums/WmsTaskStatus.java @@ -0,0 +1,35 @@ +package com.wms.constants.enums; + +/** + * Wms任务状态的枚举 + */ +public enum WmsTaskStatus { + NEW(0, "任务新建,待下发"), + WAIT(1, "任务已下发"), + RUN(2, "任务开始执行"), + OUT_SUCCESS(3, "出库完成"), + TRANS_MOVE(4, "输送线转运中"), + ARRIVE_STAND(5, "到达拣选站台"), + PICKING(6, "正在拣货"), + BACKING(7, "正在回库"), + INVENTORY(8, "盘点中"), + FINISH(100, "任务完成"), + CANCEL(998, "任务取消"), + EXCEPTION(999, "任务异常"); + + private final Integer code; + private final String name; + + WmsTaskStatus(Integer code, String name) { + this.code = code; + this.name = name; + } + + public Integer getCode() { + return code; + } + + public String getName() { + return name; + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/BaseController.java b/wms_serve/src/main/java/com/wms/controller/BaseController.java new file mode 100644 index 0000000..bfb1271 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/BaseController.java @@ -0,0 +1,8 @@ +package com.wms.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BaseController { + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); +} diff --git a/wms_serve/src/main/java/com/wms/controller/ConfigController.java b/wms_serve/src/main/java/com/wms/controller/ConfigController.java new file mode 100644 index 0000000..fd87336 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/ConfigController.java @@ -0,0 +1,87 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.page.PageDomain; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Config; +import com.wms.service.ConfigService; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +/** + * WMS系统配置控制类 + * @author 梁州 + * @date 2023/3/23 + */ +@Controller +@CrossOrigin +@RequestMapping(value = "/wms/config") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class ConfigController extends BaseController{ + /** + * 系统配置服务 + */ + private final ConfigService configService; + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 查找所有配置 + * @return 配置 + */ + @GetMapping("/getConfigs") + @ResponseBody + public List getConfigs(){ + logger.info("查询系统配置"); + return configService.selectConfigs(""); + } + + /** + * 更新系统配置 + * + * @param config 配置 + * @return 结果 + */ + @PostMapping("/updateConfig") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateConfig(@RequestBody Config config) { + logger.info("更新系统配置,{}:{}", config.getConfigName(), config.getConfigValue()); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + configService.updateConfig(config); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("更新系统配置错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新系统配置成功!"); + return JSON.toJSONString(rsp); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/DisplayController.java b/wms_serve/src/main/java/com/wms/controller/DisplayController.java new file mode 100644 index 0000000..7b242b3 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/DisplayController.java @@ -0,0 +1,104 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.wms.constants.WmsConstants; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.display.LocationData; +import com.wms.entity.app.display.LocationInfo; +import com.wms.entity.table.Location; +import com.wms.entity.table.Stock; +import com.wms.service.LocationService; +import com.wms.service.StockService; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.LinkedList; +import java.util.List; + +@Controller +@CrossOrigin +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@RequestMapping(value = "/api/query") +public class DisplayController extends BaseController{ + private final StockService stockService; + private final LocationService locationService; + private final HttpServletRequest servletRequest; + + /** + * 大屏查询库位信息 + * @param location 参数---库位 + * @return 结果 + */ + @GetMapping("/queryLocationInfo") + @ResponseBody + public String queryLocationInfo(@RequestParam String location) { + logger.info("接收到查询大屏库位信息请求,ip地址:{},参数:{}", HttpUtils.getIpAddr(servletRequest), location); + ResponseEntity response = new ResponseEntity(); + if (StringUtils.isEmpty(location)) { + logger.error("查询失败,参数中库位号为空"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("查询失败,参数中库位号为空"); + return JSON.toJSONString(response); + } + Location locationQuery = new Location(); + locationQuery.setLocationId(location); + List locations = locationService.selLocations(locationQuery); + if (locations.size() == 0) { + logger.error("查询失败,该库位立体库中不存在"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("查询失败,请检查库位号正确性"); + return JSON.toJSONString(response); + } + Location currentLocation = locations.get(0); + String vehicleNo = currentLocation.getVehicleId(); + if (StringUtils.isEmpty(vehicleNo)) { + // 设定 + LocationInfo returnData = new LocationInfo(); + returnData.setLocationId(location); + returnData.setVehicleNo(WmsConstants.EMPTY_STRING); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("查询成功"); + response.setReturnData(returnData); + return JSON.toJSONString(response); + } + // 查询库存 + Stock stockQuery = new Stock(); + stockQuery.setLocationId(location); + stockQuery.setVehicleId(vehicleNo); + List stocks = stockService.selStocks(stockQuery); + List locationData = new LinkedList<>(); + for (Stock tempStock : stocks) { + LocationData tempData = new LocationData(); + tempData.setGoodsId(tempStock.getGoodsId()); + tempData.setGoodsName(tempStock.getGoodsName()); + tempData.setGoodsNum(tempStock.getRealNum()); + locationData.add(tempData); + } + // 设定 + LocationInfo returnData = new LocationInfo(); + returnData.setLocationId(location); + returnData.setVehicleNo(WmsConstants.EMPTY_STRING); + returnData.setLocationData(locationData); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("查询成功"); + response.setReturnData(returnData); + return JSON.toJSONString(response); + } + + /** + * 查询所有库位 + * @return 结果 + */ + @GetMapping("/getAllLocations") + @ResponseBody + public String queryLocationInfo() { + logger.info("接收到查询大屏所有库位信息请求,ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + return JSON.toJSONString(locationService.selLocations(new Location())); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/ExcelController.java b/wms_serve/src/main/java/com/wms/controller/ExcelController.java new file mode 100644 index 0000000..8ae11ff --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/ExcelController.java @@ -0,0 +1,110 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.wms.constants.enums.KateTaskStatus; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.table.*; +import com.wms.service.*; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import com.wms.utils.WmsUtils; +import com.wms.utils.excel.ExcelUtils; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.*; + +/** + * + */ +@Controller +@CrossOrigin +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@RequestMapping(value = "/wms/excel") +public class ExcelController extends BaseController { + private final StockService stockService;// 库存服务 + private final PartInfoService partInfoService;// 零件服务 + private final HttpServletRequest servletRequest;// 请求服务 + private final TaskRecordService taskRecordService;// 任务记录服务 + + /** + * 导入零件信息 + * + * @param file 文件 + * @return 导入结果 + */ + @PostMapping("/uploadPartInfos") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String uploadPartInfos(@RequestPart("file") MultipartFile file) { + logger.info("接收到导入零件信息请求,ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + ResponseEntity response = new ResponseEntity(); + try { + List files = ExcelUtils.readMultipartFile(file, PartInfo.class); + // 添加进物料表 + for (PartInfo pageInfo : files) { + if (partInfoService.selPartByPartNo(pageInfo.getMaterial()) != null) {// 当前零件号的数据已经存在过 + partInfoService.modifyPart(pageInfo); + } else {// 新零件 + partInfoService.addPart(pageInfo); + } + } + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("导入excel成功"); + response.setReturnData(files); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage(e.getMessage()); + } + return JSON.toJSONString(response); + } + + /** + * 导出库存数据 + * + * @param response 请求 + */ + @GetMapping("/downloadStockExcel") + @ResponseBody + public void downloadStockExcel(HttpServletResponse response) { + List stocks = stockService.selStocks(new Stock()); + ExcelUtils.export(response, "库存报表", stocks, Stock.class); + } + + /** + * 导出入库记录 + * + * @param response 请求 + */ + @GetMapping("/downloadRukuExcel") + @ResponseBody + public void downloadRukuExcel(HttpServletResponse response) { + List ruku = taskRecordService.selTasks(new Task()); + ExcelUtils.export(response, "入库记录报表", ruku, Task.class); + } + + /** + * 导出物料信息 + * + * @param response 请求 + */ + @GetMapping("/downloadMaterialExcel") + @ResponseBody + public void downloadMaterialExcel(HttpServletResponse response) { + List Material = partInfoService.selParts(new PartInfo()); + ExcelUtils.export(response, "物料信息", Material, PartInfo.class); + } + +} \ No newline at end of file diff --git a/wms_serve/src/main/java/com/wms/controller/GoodsController.java b/wms_serve/src/main/java/com/wms/controller/GoodsController.java new file mode 100644 index 0000000..5ed9315 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/GoodsController.java @@ -0,0 +1,274 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.page.PageDomain; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Goods; +import com.wms.entity.table.PartInfo; +import com.wms.service.GoodsService; +import com.wms.service.PartInfoService; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * WMS物料控制类 + * @author 梁州 + * @date 2023/3/9 + */ +@Controller +@CrossOrigin +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@RequestMapping(value = "/wms/goods") +public class GoodsController extends BaseController{ + + /** + * 物料服务 + */ + private final GoodsService goodsService; + /** + * 零件服务 + */ + private final PartInfoService partInfoService; + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 查找所有零件信息 + */ + @PostMapping("/getPartInfo") + @ResponseBody + public String getPartInfo(@RequestBody TableRequest tableRequest){ + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询零件数据请求:{}", JSON.toJSONString(tableRequest)); + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); +// String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"}; + String orderByStr = "material asc"; + +// if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { +// orderByStr = pageRequest.getOrderBy(); +// } else { +// // 默认排序 +// orderByStr = "expiration_date desc"; +// } + + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List parts = partInfoService.selParts(tableRequest.getParam()); + PageInfo partPageInfo = new PageInfo<>(parts); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询零件信息成功!"); + tblResp.setRows(partPageInfo.getList()); + tblResp.setTotal(partPageInfo.getTotal()); + return JSON.toJSONString(tblResp); + } + + /** + * 更新零件信息 + * + * @param partInfo 零件信息 + * @return 结果 + */ + @PostMapping("/updatePartInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updatePartInfo(@RequestBody PartInfo partInfo) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到更新零件信息请求:{}", JSON.toJSONString(partInfo)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (StringUtils.isEmpty(partInfo.getMaterial())) {// 箱号为空,不执行 + logger.error("请求零件号为空"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求零件号为空"); + return JSON.toJSONString(rsp); + } + partInfoService.modifyPart(partInfo); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新零件信息成功"); + return JSON.toJSONString(rsp); + } + + /** + * 更新物料信息 + * + * @param goods 物料 + * @return 结果 + */ + @PostMapping("/updateGoodsInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateGoodsInfo(@RequestBody Goods goods) { + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + goodsService.modifyGoods(goods); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("更新物料信息发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + logger.info("更新物料信息成功:{}", goods.toLoggerString()); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新物料信息成功"); + return JSON.toJSONString(rsp); + } + + @PostMapping("/queryPartInfoByPartNo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String queryPartInfoByPartNo(@RequestBody PartInfo partInfo) { + logger.info("前台查询零件数据"); + ResponseEntity rsp = new ResponseEntity(); + if (partInfo == null || StringUtils.isEmpty(partInfo.getMaterial())) { + logger.info("请求查询的参数为空"); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求查询的参数为空"); + return JSON.toJSONString(rsp); + } + try { + PartInfo partInfoNeed = partInfoService.selPartByPartNo(partInfo.getMaterial()); + if (partInfoNeed == null) { + logger.info("查询零件信息发生错误,零件号:{}", partInfo.getMaterial()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("查询的零件信息为空"); + return JSON.toJSONString(rsp); + } + rsp.setReturnData(partInfoNeed); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("查询零件信息发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + logger.info("查询零件信息成功"); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("查询零件信息成功"); + return JSON.toJSONString(rsp); + } + + @PostMapping("/queryPartNo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String queryPartNo(@RequestBody PartInfo partInfo) { + logger.info("前台查询零件数据"); + ResponseEntity rsp = new ResponseEntity(); + if (partInfo == null || StringUtils.isEmpty(partInfo.getMaterial())) { + logger.info("请求查询的参数为空"); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求查询的参数为空"); + return JSON.toJSONString(rsp); + } + try { + PartInfo query = new PartInfo(); + query.setMaterial(partInfo.getMaterial()); + List partInfoNeed = partInfoService.selParts(query); + if (partInfoNeed.size() == 0) { + logger.info("查询零件信息发生错误,零件号:{}", partInfo.getMaterial()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("查询的零件信息为空"); + return JSON.toJSONString(rsp); + } + rsp.setReturnData(partInfoNeed); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("查询零件信息发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + logger.info("查询零件信息成功"); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("查询零件信息成功"); + return JSON.toJSONString(rsp); + } + + /** + * 删除当前零件信息 + * + * @param partInfo 零件 + * @return 结果 + */ + @PostMapping("/deletePartInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String deleteVehicle(@RequestBody PartInfo partInfo) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到更新料箱信息请求:{}", JSON.toJSONString(partInfo)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (StringUtils.isEmpty(partInfo.getMaterial())) {// 零件号为空,不做处理 + logger.error("请求删除的零件号为空"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求删除的零件号为空"); + return JSON.toJSONString(rsp); + } + partInfoService.deletePartByPartNo(partInfo.getMaterial()); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("删除零件信息成功"); + return JSON.toJSONString(rsp); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/LocationController.java b/wms_serve/src/main/java/com/wms/controller/LocationController.java new file mode 100644 index 0000000..967b60c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/LocationController.java @@ -0,0 +1,340 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.ResponseCode; +import com.wms.constants.enums.VehicleStatus; +import com.wms.entity.app.LayerLocation; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.RowLocation; +import com.wms.entity.page.PageDomain; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Location; +import com.wms.entity.table.Vehicle; +import com.wms.constants.WmsConstants; +import com.wms.constants.enums.LocationStatus; +import com.wms.service.LocationService; +import com.wms.service.VehicleService; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * WMS库位控制类 + * + * @author 梁州 + * @date 2023/3/6 + */ +@Controller +@CrossOrigin +@RequestMapping(value = "/wms/location") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class LocationController extends BaseController { + /** + * 库位服务 + */ + private final LocationService locationService; + /** + * 料箱服务 + */ + private final VehicleService vehicleService; + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + + /** + * 查询库位 + * + * @param location 查询参数 + * @return 结果 + */ + @PostMapping("/getLocations") + @ResponseBody + public String getLocations(@RequestBody Location location) { + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 查询出所有符合条件的库位 + Location location1 = new Location(); + //location1.setLocationId("A11-15-2"); + //location1.setWareArea("A"); + location1.setAreaId(2); + List locations = locationService.selLocations(location1); + if (locations.isEmpty()) { + logger.error("查询库位发生错误:库位不存在"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("查询库位发生错误:库位不存在"); + return JSON.toJSONString(rsp); + } + List rowLocations = new LinkedList<>(); + // 查找到最大的排 + locations.sort(Comparator.comparing(Location::getQueue).reversed()); + int maxRow = locations.get(0).getQueue(); + // 按排查找库位 + for (int i = 0; i < maxRow; i++) { + int finalI = i; + List currentRowLocations = new ArrayList<>(locations.stream() + .filter(l -> l.getQueue().equals(finalI + 1)) + .toList()); + // 先查找每一层的库位 + List layerLocations = new LinkedList<>(); + // 找到这一排最大的层 + currentRowLocations.sort(Comparator.comparing(Location::getLayer).reversed()); + int maxLayer = currentRowLocations.get(0).getLayer(); + // 按照每一列查找库位 + for (int j = 0; j < maxLayer; j++) { + int finalJ = j; + List currentLayerLocations = currentRowLocations.stream() + .filter(l -> l.getLayer().equals(finalJ + 1)) + .toList(); + LayerLocation tempLayerLocation = new LayerLocation(); + tempLayerLocation.setLayer(finalJ + 1); + tempLayerLocation.setCurrentColLocations(currentLayerLocations); + layerLocations.add(tempLayerLocation); + } + RowLocation tempRowLocation = new RowLocation(); + tempRowLocation.setRow(finalI + 1); + tempRowLocation.setCurrentLayerLocations(layerLocations); + rowLocations.add(tempRowLocation); + } + logger.info("查询库位数据成功,库区:{}", location.getAreaId()); + // 设置最终数据 + rsp.setReturnData(rowLocations); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("查询库位成功"); + return JSON.toJSONString(rsp); + } catch (Exception e) { + logger.info("查询库位发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + } + + /** + * 更新库位状态 + * + * @param location 库位 + * @return 结果 + */ + @PostMapping("/updateLocation") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateLocation(@RequestBody Location location) { + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // TODO 这里要更新料箱信息 + if (StringUtils.isNotEmpty(location.getVehicleId())) {// 载具号不为空 + // 判断是不是需要往载具表里面添加数据 + if (vehicleService.selVehicleById(location.getVehicleId()) == null) { + // 添加新载具 + Vehicle newVehicle = new Vehicle(); + newVehicle.setVehicleId(location.getVehicleId()); + newVehicle.setVehicleStatus(VehicleStatus.ON.getCode()); + newVehicle.setCurrentLocation(location.getLocationId()); + newVehicle.setIsEmpty(1); + vehicleService.addVehicle(newVehicle); + } + } + locationService.modifyLocation(location); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("更新库位状态发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新库位状态成功"); + return JSON.toJSONString(rsp); + } + + /** + * 更新库位状态 + * + * @param location 库位 + * @return 结果 + */ + @PostMapping("/getAvailableLocations") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String getAvailableLocations(@RequestBody Location location) { + logger.info("查询空闲可用库位"); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + Location locationQuery = new Location(); + locationQuery.setAreaId(location.getAreaId()); + locationQuery.setLocationStatus(LocationStatus.EMPTY.getCode()); + locationQuery.setIsLock(0); + List availableLocations = locationService.selLocations(locationQuery); + rsp.setReturnData(availableLocations); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("查询可用库位错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("查询可用库位成功"); + return JSON.toJSONString(rsp); + } + + /** + * 查询料箱信息 + * @param tableRequest 请求 + * @return 结果 + */ + @PostMapping("/getVehicles") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String getVehicles(@RequestBody TableRequest tableRequest) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询料箱请求:{}", JSON.toJSONString(tableRequest)); + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); +// String[] orderByArr = {"task_id", "task_type", "task_status", "goods_id", "goods_name", "task_priority", "expiration_date", "create_time"}; + String orderByStr = ""; + +// if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { +// orderByStr = pageRequest.getOrderBy(); +// } else { +// // 默认排序 +// orderByStr = ""; +// } + + Vehicle vehicleQuery = new Vehicle(); + vehicleQuery.setVehicleId(tableRequest.getParam().getVehicleId()); + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List vehicles = vehicleService.selVehicles(vehicleQuery); + PageInfo vehiclePageInfo = new PageInfo<>(vehicles); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询料箱成功!"); + tblResp.setRows(vehiclePageInfo.getList()); + tblResp.setTotal(vehiclePageInfo.getTotal()); + return JSON.toJSONString(tblResp); + } + + /** + * 更新料箱信息 + * + * @param vehicle 料箱 + * @return 结果 + */ + @PostMapping("/updateVehicleInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateVehicleInfo(@RequestBody Vehicle vehicle) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到更新料箱信息请求:{}", JSON.toJSONString(vehicle)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (StringUtils.isEmpty(vehicle.getVehicleId())) {// 箱号为空,不执行 + logger.error("请求箱号为空"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求箱号为空"); + return JSON.toJSONString(rsp); + } + vehicleService.modifyVehicle(vehicle); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新料箱信息成功"); + return JSON.toJSONString(rsp); + } + + /** + * 删除当前料箱信息 + * + * @param vehicle 料箱 + * @return 结果 + */ + @PostMapping("/deleteVehicle") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String deleteVehicle(@RequestBody Vehicle vehicle) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到更新料箱信息请求:{}", JSON.toJSONString(vehicle)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (StringUtils.isEmpty(vehicle.getVehicleId())) {// 箱号为空,不执行 + logger.error("请求箱号为空"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求箱号为空"); + return JSON.toJSONString(rsp); + } + // 判断当前料箱是不是空箱,带料不允许删除 + Vehicle currentVehicle = vehicleService.selVehicleById(vehicle.getVehicleId()); + if (currentVehicle != null && currentVehicle.getIsEmpty() != 1) {// 非空箱 + logger.error("非空箱不允许删除"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("非空箱不允许删除"); + return JSON.toJSONString(rsp); + } + // 将库中表中是当前载具的信息清空 + Location locationQuery = new Location(); + locationQuery.setVehicleId(vehicle.getVehicleId()); + List locations = locationService.selLocations(locationQuery); + for (Location location : locations) { + location.setVehicleId(WmsConstants.EMPTY_STRING); + locationService.modifyLocation(location); + } + vehicleService.deleteVehicle(vehicle); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("删除料箱成功"); + return JSON.toJSONString(rsp); + } +} \ No newline at end of file diff --git a/wms_serve/src/main/java/com/wms/controller/OrderCheckController.java b/wms_serve/src/main/java/com/wms/controller/OrderCheckController.java new file mode 100644 index 0000000..2747349 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/OrderCheckController.java @@ -0,0 +1,60 @@ +package com.wms.controller; + +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderCheck.queryOrderCheckRequest; +import com.wms.entity.table.OrderCheck; +import com.wms.service.IOrderCheckService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Slf4j +@RestController +@CrossOrigin +@RequestMapping(value = "/wms/api/orderCheck") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class OrderCheckController { + + + private final IOrderCheckService orderCheckService; + + /** + * 查询订单 + */ + @PostMapping(value = "/queryOrderCheck") + public WmsApiResponse> getOrderCheck(@RequestBody queryOrderCheckRequest request) { + return orderCheckService.queryOrderCheck(request); + } + + /** + * 执行订单 + */ + @PutMapping(value = "/executeOrderCheck/{recordId}") //更新 + public WmsApiResponse executeOrderCheck(@PathVariable String recordId) { + return orderCheckService.executeOrderCheck(recordId); + } + + /** + * 删除订单 + */ + @DeleteMapping(value = "/deleteCheck/{recordId}") + public WmsApiResponse deleteOrderIn(@PathVariable String recordId) { + return orderCheckService.deleteOrderCheck(recordId); + } + + @DeleteMapping(value = "/deleteCheckAll/{remarkReturn}") + public WmsApiResponse deleteOrderInAll(@PathVariable String remarkReturn){ + return orderCheckService.deleteOrderCheckAll(remarkReturn); + } + + /** + * 下发一个盘点任务 + */ + @PostMapping(value = "/downInventoryTask") + public WmsApiResponse issueOrderCheck() { + return orderCheckService.issueOrderCheck(); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/OrderInController.java b/wms_serve/src/main/java/com/wms/controller/OrderInController.java new file mode 100644 index 0000000..b2c819b --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/OrderInController.java @@ -0,0 +1,100 @@ +package com.wms.controller; + +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderIn.bindingVehicleRequest; +import com.wms.entity.dto.orderIn.downOrderInRequest; +import com.wms.entity.dto.orderIn.queryOrderInRequest; +import com.wms.entity.dto.orderIn.updateNumRequest; +import com.wms.entity.table.AppOrderIn; +import com.wms.service.IOrderInService; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.List; + +@Slf4j +@RestController +@CrossOrigin +@RequestMapping(value = "/wms/api/orderIn") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class OrderInController { + + + private final IOrderInService iOrderInService; + + /** + * 查询入库单 + * @param request 请求参数 + * @return 返回结果 + */ + @PostMapping(value = "/queryOrderIn") + public WmsApiResponse> queryOrderIn(@RequestBody queryOrderInRequest request) { + return iOrderInService.queryOrderIn(request); + } + + /** + * 新增入库单 + * @param request 请求参数 + * @return 返回结果 + */ + @PostMapping(value = "/addOrderIn") + public WmsApiResponse addOrderIn(@RequestBody downOrderInRequest request) { + return iOrderInService.addOrderIn(request); + } + /** + * 绑定载具 + * @param request 请求参数 + * @return 返回结果 + */ + @PostMapping(value = "/bindingVehicle") + public WmsApiResponse bindingVehicle(@RequestBody bindingVehicleRequest request) { + return iOrderInService.bindingVehicle(request); + } + + /** + * 更新数量 + * @return 更新结果 + */ + @PostMapping(value = "/updateForNum") + public WmsApiResponse updateForNum(@RequestBody updateNumRequest request) { + return iOrderInService.updateForNum(request); + } + + /** + * 根据载具号查询入库单 + * @param vehicleNo 载具号 + * @return 查询结果 + */ + @GetMapping(value = "/getOrderInWithVehicleNo") + public WmsApiResponse> getOrderInWithVehicleNo(@RequestParam("vehicleNo") String vehicleNo) { + return iOrderInService.getOrderInWithVehicleNo(vehicleNo); + } + + /** + * 解绑载具 + * @param rowId 行号 + * @return 解绑结果 + */ + @PutMapping(value = "/unBindingVehicle/{rowId}") + public WmsApiResponse unBindingVehicle(@PathVariable String rowId) { + return iOrderInService.unBindingVehicle(rowId); + } + + + + + /** + * 删除入库单 + * @param rowId 行号 + * @return 删除结果 + */ + @DeleteMapping(value = "/deleteOrderIn/{rowId}") + public WmsApiResponse deleteOrderIn(@PathVariable String rowId) { + return iOrderInService.deleteOrderIn(rowId); + } + +} diff --git a/wms_serve/src/main/java/com/wms/controller/OrderOutController.java b/wms_serve/src/main/java/com/wms/controller/OrderOutController.java new file mode 100644 index 0000000..0f6925f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/OrderOutController.java @@ -0,0 +1,90 @@ +package com.wms.controller; + + +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderOut.handOrderOutRequest; +import com.wms.entity.dto.orderOut.queryOrderOutRequest; +import com.wms.entity.table.OrderOut; +import com.wms.service.IOrderOutService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Slf4j +@RestController +@CrossOrigin +@RequestMapping(value = "/wms/api/orderOut") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class OrderOutController { + + + private final IOrderOutService orderOutService; + + /** + * 查询出库单 + * @param request 请求参数 + * @return 结果 + */ + @PostMapping(value = "/queryOrderOut") //刪除 + public WmsApiResponse> queryOrderOut(@RequestBody queryOrderOutRequest request) { + return orderOutService.queryOrderOut(request); + } + + /** + * 执行出库单 + * @param rowId 数据行号 + * @return 执行结果 + */ + @PutMapping(value = "/executeOrderOut/{rowId}") //更新 + public WmsApiResponse executeOrderOut(@PathVariable String rowId) { + return orderOutService.executeOrderOut(rowId); + } + + /** + * 出库单出库 + * @param rowId 数据行号 + * @return 出库结果 + */ +// @PutMapping(value = "/outRowStock/{rowId}") //更新 +// public WmsApiResponse outRowStock(@PathVariable String rowId) { +// return orderOutService.outRowStock(rowId); +// } + + + /** + * 删除出库单 + * @param rowId 数据行号 + * @return 删除结果 + */ + @DeleteMapping(value = "/deleteOrderOut/{rowId}") //刪除 + public WmsApiResponse deleteOrderOut(@PathVariable String rowId) { + return orderOutService.deleteOrderOut(rowId); + } + + + /** + * 创建手动出库单 + * @return 创建结果 + */ + @PostMapping(value = "/addOrderOut") + public WmsApiResponse createOrderOut(@RequestBody handOrderOutRequest request) { + return orderOutService.createOrderOut(request); + } + + @PostMapping(value = "/addOrderByInsertEmpty") + public WmsApiResponse InsertEmpty(@RequestBody handOrderOutRequest request) { + if (orderOutService.createEmptyLocation(request)){ + return new WmsApiResponse<>(0, "添加成功", null); + }else { + return new WmsApiResponse<>(1, "添加失败", null); + } + } + + //@PostMapping(value = "/addOrderOutjklove") + public WmsApiResponse updateLocation(@RequestBody handOrderOutRequest request) { + return orderOutService.updateLocation(request); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/RecordController.java b/wms_serve/src/main/java/com/wms/controller/RecordController.java new file mode 100644 index 0000000..3a431fc --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/RecordController.java @@ -0,0 +1,90 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.page.PageDomain; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Task; +import com.wms.service.TaskRecordService; +import com.wms.utils.HttpUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * WMS记录控制类 + * + * @author 梁州 + * @date 2023/2/14 + */ +@Controller +@CrossOrigin +@RequestMapping(value = "/wms/record") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class RecordController extends BaseController { + /** + * 任务记录服务 + */ + private final TaskRecordService taskRecordService; + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 查询任务记录 + * + * @param tableRequest 请求 + * @return 结果 + */ + @PostMapping("/getTaskRecords") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String getVehicles(@RequestBody TableRequest tableRequest) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询任务记录请求:{}", JSON.toJSONString(tableRequest)); + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); +// String[] orderByArr = {"task_id", "task_type", "task_status", "goods_id", "goods_name", "task_priority", "expiration_date", "create_time"}; + String orderByStr = ""; + +// if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { +// orderByStr = pageRequest.getOrderBy(); +// } else { +// // 默认排序 +// orderByStr = ""; +// } + + Task taskRecordQuery = new Task(); + taskRecordQuery.setTaskType(tableRequest.getParam().getTaskType()); + taskRecordQuery.setGoodsId(tableRequest.getParam().getGoodsId()); + taskRecordQuery.setVehicleNo(tableRequest.getParam().getVehicleNo()); + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List records = taskRecordService.selTasks(taskRecordQuery); + PageInfo taskRecordPageInfo = new PageInfo<>(records); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询任务记录成功!"); + tblResp.setRows(taskRecordPageInfo.getList()); + tblResp.setTotal(taskRecordPageInfo.getTotal()); + return JSON.toJSONString(tblResp); + + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/StandController.java b/wms_serve/src/main/java/com/wms/controller/StandController.java new file mode 100644 index 0000000..28d1455 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/StandController.java @@ -0,0 +1,133 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.page.PageDomain; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Stand; +import com.wms.service.StandService; +import com.wms.utils.HttpUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 站台控制类 + */ +@Controller +@CrossOrigin +@RequestMapping(value = "/wms/stand") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class StandController extends BaseController { + /** + * 站台服务 + */ + private final StandService standService; + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 查询可用站台列表 + * @return 符合条件的站台列表 + */ + @PostMapping("/getAllStands") + @ResponseBody + public List getAllStands(@RequestBody JSONObject type){ + logger.info("查询站台{}", JSON.toJSONString(type)); + int type_int = type.getIntValue("type"); + Stand query = new Stand(); + if (type_int == 1) {// 入库站台 + query.setAllowIn(1); + } else if (type_int == 2) {// 出库站台 + query.setAllowOut(1); + } else if (type_int == 3) {// 盘点站台 + query.setAllowIn(1); + query.setAllowOut(1); + } + return standService.selStands(query); + } + + /** + * 更新站台状态 + * + * @param stand 站台 + * @return 结果 + */ + @PostMapping("/updateStandInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateStandInfo(@RequestBody Stand stand) { + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + standService.modifyStand(stand); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("更新站台信息发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + logger.info("更新站台信息成功:{}", stand.toLoggerString()); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新站台信息成功"); + return JSON.toJSONString(rsp); + } + + /** + * 查找所有库存 + */ + @PostMapping("/getStands") + @ResponseBody + public String getStands(@RequestBody TableRequest tableRequest){ + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询库存请求:{}", JSON.toJSONString(tableRequest)); + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); +// String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"}; + String orderByStr = ""; + +// if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { +// orderByStr = pageRequest.getOrderBy(); +// } else { +// // 默认排序 +// orderByStr = "expiration_date desc"; +// } + + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List stands = standService.selStands(tableRequest.getParam()); + PageInfo standPageInfo = new PageInfo<>(stands); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询库存成功!"); + tblResp.setRows(standPageInfo.getList()); + tblResp.setTotal(standPageInfo.getTotal()); + logger.info("查询库存成功,总数:{},当前页:{},当前页数量:{}", standPageInfo.getTotal(), standPageInfo.getPageNum(), standPageInfo.getPageSize()); + return JSON.toJSONString(tblResp); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/StockController.java b/wms_serve/src/main/java/com/wms/controller/StockController.java new file mode 100644 index 0000000..53c9c48 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/StockController.java @@ -0,0 +1,202 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.page.PageDomain; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Stock; +import com.wms.service.StockService; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import com.wms.utils.WmsUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +/** + * WMS库存控制类 + * @author 梁州 + * @date 2023/2/14 + */ +@Controller +@CrossOrigin +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@RequestMapping(value = "/wms/stock") +public class StockController extends BaseController { + /** + * 库存服务 + */ + private final StockService stockService; + + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 查找所有库存 + */ + @PostMapping("/getAllStocks") + @ResponseBody + public String getAllStocks(@RequestBody TableRequest tableRequest){ + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询库存请求:{}", JSON.toJSONString(tableRequest)); + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); + String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"}; + String orderByStr; + + if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { + orderByStr = pageRequest.getOrderBy(); + } else { + // 默认排序 + orderByStr = "expiration_date desc"; + } + + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List stocks = stockService.selStocksFront(tableRequest.getParam()); + PageInfo stockPageInfo = new PageInfo<>(stocks); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询库存成功!"); + tblResp.setRows(stockPageInfo.getList()); + tblResp.setTotal(stockPageInfo.getTotal()); + logger.info("查询库存成功,总数:{},当前页:{},当前页数量:{}", stockPageInfo.getTotal(), stockPageInfo.getPageNum(), stockPageInfo.getPageSize()); + return JSON.toJSONString(tblResp); + } + + /** + * 查找所有库存---按物料汇总 + */ + @PostMapping("/getAllStocksByGoodsId") + @ResponseBody + public String getAllStocksByGoodsId(@RequestBody TableRequest tableRequest){ + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询库存请求:{}", JSON.toJSONString(tableRequest)); + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); + String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"}; + String orderByStr; + + if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { + orderByStr = pageRequest.getOrderBy(); + } else { + // 默认排序 + orderByStr = "goods_id desc"; + } + Stock stockQuery = new Stock(); + stockQuery.setGoodsId(tableRequest.getParam()); + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List stocks = stockService.selStocksByGoodsId(stockQuery); + PageInfo stockPageInfo = new PageInfo<>(stocks); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询库存成功!"); + tblResp.setRows(stockPageInfo.getList()); + tblResp.setTotal(stockPageInfo.getTotal()); + logger.info("查询库存成功,总数:{},当前页:{},当前页数量:{}", stockPageInfo.getTotal(), stockPageInfo.getPageNum(), stockPageInfo.getPageSize()); + return JSON.toJSONString(tblResp); + } + + /** + * 更新库存信息 + * + * @param stock 库存 + * @return 结果 + */ + @PostMapping("/updateStockInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateStockInfo(@RequestBody Stock stock) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到更新库存信息请求:{}", JSON.toJSONString(stock)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (StringUtils.isEmpty(stock.getStockId())) {// 库存编号为空,不允许执行 + logger.error("请求的库存编号为空,不允许修改"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求的库存编号为空,不允许修改"); + return JSON.toJSONString(rsp); + } + if (stock.getRealNum() == 0) { + stockService.deleteStock(stock.getStockId()); + } else { + stockService.modifyStock(stock); + } + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新库存信息成功"); + return JSON.toJSONString(rsp); + } + + /** + * 新增库存 + * + * @param stock 库存 + * @return 结果 + */ + @PostMapping("/addNewStock") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String addNewStock(@RequestBody Stock stock) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到人工添加库存:{}", JSON.toJSONString(stock)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + Stock tempStock = new Stock(); + tempStock.setStockId(WmsUtils.generateId("ST")); + + + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("添加库存信息成功"); + return JSON.toJSONString(rsp); + } +} \ No newline at end of file diff --git a/wms_serve/src/main/java/com/wms/controller/TaskController.java b/wms_serve/src/main/java/com/wms/controller/TaskController.java new file mode 100644 index 0000000..db8ee14 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/TaskController.java @@ -0,0 +1,1326 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.*; +import com.wms.entity.app.*; +import com.wms.entity.app.wcs.*; +import com.wms.entity.page.PageDomain; +import com.wms.mapper.StockMapper; +import com.wms.mapper.TaskMapper; +import com.wms.entity.page.TableRequest; +import com.wms.entity.page.TableResponse; +import com.wms.entity.table.*; +import com.wms.constants.WmsConstants; +import com.wms.utils.storage.LocationUtils; +import com.wms.service.*; +import com.wms.utils.HttpUtils; +import com.wms.mapper.LocationMapper; +import com.wms.utils.StringUtils; +import com.wms.utils.WmsUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * WMS任务控制类 + * + * @author 梁州 + * @date 2023/2/14 + */ +@Controller +@CrossOrigin +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@RequestMapping(value = "/wms/task") +public class TaskController extends BaseController { + /** + * 任务服务 + */ + private final TaskService taskService; + /** + * 任务 Mapper + */ + private final TaskMapper taskMapper; + /** + * 库存 Mapper + */ + private final StockMapper stockMapper; + /** + * 库存服务 + */ + private final StockService stockService; + /** + * 库位操作类 + */ + private final LocationUtils locationUtils; + + /** + * 零件 + */ + private final PartInfoService partInfoService; + /** + * 库位服务 + */ + private final LocationService locationService; + /** + * 任务记录服务 + */ + private final TaskRecordService taskRecordService; + /** + * 站台服务 + */ + private final StandService standService; + /** + * 载具服务 + */ + private final VehicleService vehicleService; + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 订单入库 Mapper + */ + private final com.wms.mapper.AppOrderInMapper appOrderInMapper; + /** + * 库位 Mapper + */ + private final LocationMapper locationMapper; + /** + * 创建入库任务(人工入库) + * + * @param taskInRequestEntityList 入库任务 + * @return 结果 + */ + @PostMapping("/sendGoodsInTask") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String receiveGoodsInTask(@RequestBody List taskInRequestEntityList) { + logger.info("接收到入库任务:{},ip地址:{}", JSON.toJSONString(taskInRequestEntityList), HttpUtils.getIpAddr(servletRequest)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 根据ip获得站台信息 + List stands = standService.selStands(new Stand(2, HttpUtils.getIpAddr(servletRequest), 0)); + if (stands.size() < 1) {// 请求的地址不是站台电脑 + logger.error("请用站台电脑下发任务"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请用站台电脑下发任务"); + return JSON.toJSONString(rsp); + } + // 同一次请求为同一载具任务,为同一任务组 + String taskGroupId = WmsUtils.generateUUIDString(); + // 下一个库位 + Location nextLocation = new Location(); + // 当前载具 + String currentVehicleNo = taskInRequestEntityList.get(0).getVehicleNo(); + // 入库设备号 + int currentSelEquip = 0; + // 查询当前载具库存信息 + Vehicle vehicleQuery = new Vehicle(); + vehicleQuery.setVehicleId(currentVehicleNo); + List existVehicles = vehicleService.selVehicles(vehicleQuery); + if (existVehicles.size() > 0 && Objects.equals(existVehicles.get(0).getVehicleStatus(), VehicleStatus.ON.getCode())) { + logger.error("载具{}已经在库存中,请勿重复入库!", currentVehicleNo); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("该托盘已经在库存中,请勿重复入库!"); + return JSON.toJSONString(rsp); + } + Task taskQuery = new Task(); + taskQuery.setVehicleNo(currentVehicleNo); + List sameVehicleTasks = taskService.selTasks(taskQuery); + if (sameVehicleTasks.size() > 0) { + logger.error("载具{}存在其他任务,请勿重复入库!", currentVehicleNo); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("该载具存在其他任务,请勿重复入库!"); + return JSON.toJSONString(rsp); + } + if (existVehicles.size() > 0) { + nextLocation = locationService.selLocations(new Location(existVehicles.get(0).getCurrentLocation())).get(0); + } + for (TaskInRequestEntity taskInRequestEntity : taskInRequestEntityList) {// 循环生成入库任务 + // 生成任务 + Task task_new = new Task(); + // 保存必要的物料信息 + task_new.setTaskId(WmsUtils.generateId("RK")); + // 设置发送给WCS的任务信息 + task_new.setTaskType(TaskType.IN.getCode()); + task_new.setTaskStatus(WmsTaskStatus.NEW.getCode()); + task_new.setTaskGroup(taskGroupId); + // 查找库位时过滤掉不可用堆垛机 + Stand standQuery1 = new Stand(); + standQuery1.setStandType(3); + standQuery1.setIsLock(0); + standQuery1.setStandStatus(0); + List availableEquips = standService.selStands(standQuery1); + if (availableEquips.size() < 1) {// 没有可用堆垛机,请稍后重试 + logger.error("当前库无可用堆垛机,请稍后重试!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前库无可用堆垛机,请稍后重试!"); + return JSON.toJSONString(rsp); + } + // 找到占用库位数量最少的堆垛机 + int occupyLocationsNum = 1000000; + for (Stand availableEquip : availableEquips) { + Location locationQuery1 = new Location(); + locationQuery1.setEquipmentId(availableEquip.getEquipmentId()); + locationQuery1.setLocationStatus(LocationStatus.OCCUPY.getCode()); + List locations1 = locationService.selLocations(locationQuery1); + if (locations1.size() < occupyLocationsNum) {// 当前最小 + occupyLocationsNum = locations1.size(); + currentSelEquip = availableEquip.getEquipmentId(); + } + } + //查找到对应的入库站台 + Stand standQuery2 = new Stand(); + standQuery2.setAllowIn(1); + standQuery2.setAllowOut(0); + standQuery2.setEquipmentId(currentSelEquip); + standQuery2.setIsLock(0); + standQuery2.setStandStatus(0); + standQuery2.setStandType(1); + List availableStands = standService.selStands(standQuery2); + if (availableStands.size() < 1) { + logger.error("当前堆垛机无可用入库站台,请稍后重试!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前堆垛机无可用入库站台,请稍后重试!"); + return JSON.toJSONString(rsp); + } + task_new.setOrigin(availableStands.get(0).getStandId()); + // 查找下一个可用库位 + if (StringUtils.isEmpty(nextLocation.getLocationId())) { + List nextLocations = locationService.selNextLocation(new Location(currentSelEquip)); + if (nextLocations.size() < 1) { + logger.error("入库错误:没有可用储存位"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("入库错误:没有可用储存位"); + return JSON.toJSONString(rsp); + } + nextLocation = nextLocations.get(0); + } + nextLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + nextLocation.setVehicleId(taskInRequestEntity.getVehicleNo()); + task_new.setDestination(nextLocation.getLocationId()); + task_new.setWeight(taskInRequestEntity.getWeight() == null ? 0 : taskInRequestEntity.getWeight()); + task_new.setVehicleNo(taskInRequestEntity.getVehicleNo()); + task_new.setCreateTime(new Date()); + task_new.setUserName(taskInRequestEntity.getUserName()); + task_new.setGoodsId(taskInRequestEntity.getGoodsId()); + if (!taskInRequestEntity.getGoodsId().equals(WmsConstants.EMPTY_STOCK_GOODS_ID)) { + // 查询物料信息后设定 + PartInfo partInfo = partInfoService.selPartByPartNo(taskInRequestEntity.getGoodsId()); + task_new.setGoodsName(partInfo.getItemDesc()); + if (Double.parseDouble(partInfo.getSLED()) > 0) { + task_new.setProductionDate(taskInRequestEntity.getProductionDate()); + task_new.setExpirationDate(WmsUtils.calculationMonth(taskInRequestEntity.getProductionDate(), (int) (12 * Double.parseDouble(partInfo.getSLED())))); + } + } + task_new.setOperateNum(taskInRequestEntity.getGoodsNum()); + task_new.setTotalNum(0); + task_new.setTaskPriority(1); + // 插入入库任务 + taskService.addTask(task_new); + } + // 锁定库位 + locationService.modifyLocation(nextLocation); + // 添加载具/更新载具 + if (existVehicles.size() == 0) { + Vehicle newVehicle = new Vehicle(); + newVehicle.setVehicleId(currentVehicleNo); + newVehicle.setVehicleStatus(VehicleStatus.IN.getCode());// 入库中 + newVehicle.setCurrentLocation(nextLocation.getLocationId()); + if (Objects.equals(taskInRequestEntityList.get(0).getIsEmpty(), "0")) { + newVehicle.setIsEmpty(1); + } else { + newVehicle.setIsEmpty(0); + } + vehicleService.addVehicle(newVehicle); + } else { + Vehicle oldVehicle = existVehicles.get(0); + oldVehicle.setVehicleStatus(VehicleStatus.IN.getCode());// + oldVehicle.setCurrentLocation(nextLocation.getLocationId()); + if (Objects.equals(taskInRequestEntityList.get(0).getIsEmpty(), "0")) { + oldVehicle.setIsEmpty(1); + } else { + oldVehicle.setIsEmpty(0); + } + vehicleService.modifyVehicle(oldVehicle); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("创建入库任务成功"); + return JSON.toJSONString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + } + + /** + * 出库---根据零件号出库 + * @param taskOutRequest 请求 + * @return 结果 + */ + @PostMapping("/sendGoodsOutTask") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String receiveGoodsOutTask(@RequestBody TaskOutRequestEntity taskOutRequest) { + logger.info("接收到出库请求:{},ip地址:{}", JSON.toJSONString(taskOutRequest), HttpUtils.getIpAddr(servletRequest)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + StringBuilder returnMessage = new StringBuilder(); + try { + // 根据ip获得站台信息 + List stands = standService.selStands(new Stand(2, HttpUtils.getIpAddr(servletRequest), 0)); + if (stands.size() < 1) {// 请求的地址不是站台电脑 + logger.error("请用站台电脑下发任务"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请用站台电脑下发任务"); + return JSON.toJSONString(rsp); + } + // 判断物料编号和数量有没有输入 + if (taskOutRequest== null || StringUtils.isEmpty(taskOutRequest.getGoodsId()) || taskOutRequest.getNeedNum() == null || taskOutRequest.getNeedNum() == 0) { + logger.error("物料号和数量必须输入,请确认!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("物料号和数量必须输入,请确认!"); + return JSON.toJSONString(rsp); + } + // 查找库存 + Stock stockQuery = new Stock(); + stockQuery.setGoodsId(taskOutRequest.getGoodsId()); + stockQuery.setVehicleId(taskOutRequest.getVehicleNo()); + stockQuery.setStockStatus(StockStatus.OK.getCode()); + List needStocks = stockService.selStocks(stockQuery); + if (needStocks.size() == 0) {// 没有库存 + logger.error("选择的库存不存在,无法出库!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("选择的库存不存在,无法出库!"); + return JSON.toJSONString(rsp); + } + int needNum = taskOutRequest.getNeedNum(); + Location currentLocation; + for (Stock needStock : needStocks) { + if (needNum > 0 && needStock.getRemainNum() > 0) {// 还有需求数量 + Task tempTask = new Task(); + tempTask.setTaskId(WmsUtils.generateId("CK")); + tempTask.setTaskType(TaskType.OUT.getCode()); + tempTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + tempTask.setTaskGroup(WmsUtils.generateUUIDString()); + tempTask.setTaskPriority(1); + tempTask.setPickStand(stands.get(0).getStandId()); + tempTask.setVehicleNo(needStock.getVehicleId()); + tempTask.setUserName(taskOutRequest.getUserName()); + tempTask.setGoodsId(needStock.getGoodsId()); + tempTask.setGoodsName(needStock.getGoodsName()); + tempTask.setCreateTime(new Date()); + tempTask.setProductionDate(needStock.getProductionDate()); + tempTask.setExpirationDate(needStock.getExpirationDate()); + tempTask.setTotalNum(needStock.getRealNum()); + tempTask.setOrigin(needStock.getLocationId()); + //查找到对应的出库 + currentLocation = locationService.selLocations(new Location(needStock.getLocationId())).get(0); + Stand standQuery2 = new Stand(); + standQuery2.setAllowIn(0); + standQuery2.setAllowOut(1); + standQuery2.setEquipmentId(currentLocation.getEquipmentId()); + standQuery2.setIsLock(0); + standQuery2.setStandStatus(0); + standQuery2.setStandType(1); + List availableStands = standService.selStands(standQuery2); + if (availableStands.size() < 1) { + logger.error("当前库存的出库站台不可用!"); + // 返回错误信息 + returnMessage.append("当前库存所在载具").append(currentLocation.getVehicleId()).append("的出库站台不可用!\n"); + } + tempTask.setDestination(availableStands.get(0).getStandId()); + if (needNum <= needStock.getRemainNum()) {// 数量足够 + tempTask.setOperateNum(needNum); + needNum = 0; + needStock.setRemainNum(needStock.getRemainNum() - needNum); + } else { + tempTask.setOperateNum(needStock.getRemainNum()); + needNum -= needStock.getRemainNum(); + needStock.setRemainNum(0); + } + // 添加任务 + taskService.addTask(tempTask); + logger.info("添加任务成功,{}", JSON.toJSONString(tempTask)); + // 更新库存 + needStock.setStockStatus(StockStatus.OUT.getCode()); + stockService.modifyStock(needStock); + logger.info("更新库存信息成功,{}", JSON.toJSONString(needStock)); + // 更新载具信息 + Vehicle currentVehicle = vehicleService.selVehicleById(needStock.getVehicleId()); + if (currentVehicle == null) { + currentVehicle = new Vehicle(); + currentVehicle.setVehicleId(needStock.getVehicleId()); + currentVehicle.setIsEmpty(0); + currentVehicle.setCurrentLocation(needStock.getLocationId()); + currentVehicle.setVehicleStatus(VehicleStatus.OUT.getCode()); + vehicleService.addVehicle(currentVehicle); + } else { + currentVehicle.setVehicleStatus(VehicleStatus.OUT.getCode()); + vehicleService.modifyVehicle(currentVehicle); + } + logger.info("更新载具信息,{}", JSON.toJSONString(currentVehicle)); + // 将当前载具的其他库存也设置为相同状态 + Stock stockQuery2 = new Stock(); + stockQuery2.setVehicleId(needStock.getVehicleId()); + List sameVehicleStocks = stockService.selStocks(stockQuery2); + for (Stock sameVehicleStock : sameVehicleStocks) { + if (!Objects.equals(sameVehicleStock.getStockId(), needStock.getStockId())) { + sameVehicleStock.setStockStatus(StockStatus.OUT.getCode()); + stockService.modifyStock(sameVehicleStock); + } + } + logger.info("更新载具中其他库存信息,{}", needStock.getVehicleId()); + } + } + if (needNum > 0) {// 库存不足的情况下 + returnMessage.append("当前可用数量不足,已将能够出库的库存出库。\n"); + } + logger.info("下发出库任务成功"); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage(String.valueOf(returnMessage)); + return JSON.toJSONString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("创建出库任务发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + } + + /** + * 出库---根据料箱号出 + * @param taskOutRequest 请求 + * @return 结果 + */ + @PostMapping("/vehicleOut") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String selectVehicleOut(@RequestBody TaskOutRequestEntity taskOutRequest) { + logger.info("接收到出箱请求:{},ip地址:{}", JSON.toJSONString(taskOutRequest), HttpUtils.getIpAddr(servletRequest)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 根据ip获得站台信息 + List stands = standService.selStands(new Stand(2, HttpUtils.getIpAddr(servletRequest), 0)); + if (stands.size() < 1) {// 请求的地址不是站台电脑 + logger.error("请用站台电脑下发任务"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请用站台电脑下发任务"); + return JSON.toJSONString(rsp); + } + // 判断物料编号和数量有没有输入 + if (taskOutRequest== null || StringUtils.isEmpty(taskOutRequest.getVehicleNo())) { + logger.error("箱号必须输入,请确认!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("箱号必须输入,请确认!"); + return JSON.toJSONString(rsp); + } + Vehicle vehicle = vehicleService.selVehicleById(taskOutRequest.getVehicleNo()); + if (vehicle == null || !Objects.equals(vehicle.getVehicleStatus(), VehicleStatus.ON.getCode())) { + logger.error("当前箱子不可用,请确认!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前箱子不可用,请确认!"); + return JSON.toJSONString(rsp); + } + int needNum = taskOutRequest.getNeedNum(); + // 生成任务 + Task tempTask = new Task(); + tempTask.setVehicleNo(taskOutRequest.getVehicleNo()); + tempTask.setTaskId(WmsUtils.generateId("RKCK")); + tempTask.setTaskGroup(WmsUtils.generateUUIDString()); + tempTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + tempTask.setTaskType(TaskType.OUT.getCode()); + tempTask.setOperateNum(0); + tempTask.setCreateTime(new Date()); + tempTask.setGoodsId(WmsConstants.EMPTY_STOCK_GOODS_ID); + tempTask.setUserName(taskOutRequest.getUserName()); + tempTask.setPickStand(stands.get(0).getStandId()); + tempTask.setTaskPriority(1); + tempTask.setWeight((double) 0); + tempTask.setOrigin(vehicle.getCurrentLocation()); + //查找到对应的出库站台 + Location currentLocation = locationService.selLocations(new Location(vehicle.getCurrentLocation())).get(0); + Stand standQuery2 = new Stand(); + standQuery2.setAllowIn(0); + standQuery2.setAllowOut(1); + standQuery2.setEquipmentId(currentLocation.getEquipmentId()); + standQuery2.setIsLock(0); + standQuery2.setStandStatus(0); + standQuery2.setStandType(1); + List availableStands = standService.selStands(standQuery2); + if (availableStands.size() < 1) { + logger.error("当前箱子的出库站台不可用!"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前箱子的出库站台不可用!"); + return JSON.toJSONString(rsp); + } + tempTask.setDestination(availableStands.get(0).getStandId()); + taskService.addTask(tempTask); + logger.info("下发出箱任务成功"); + // 更新料箱状态 + vehicle.setVehicleStatus(VehicleStatus.OUT.getCode()); + vehicleService.modifyVehicle(vehicle); + logger.info("更新料箱状态成功"); + // 该箱子上的库存状态变更 + Stock stockQuery = new Stock(); + stockQuery.setVehicleId(taskOutRequest.getVehicleNo()); + List stocks = stockService.selStocks(stockQuery); + for (Stock tempStock : stocks) { + if (needNum <= 0){ + break; + } + tempStock.setStockStatus(StockStatus.OUT.getCode()); + needNum = needNum - tempStock.getRealNum(); + stockService.modifyStock(tempStock); + } +// for (Stock tempStock : stocks){ +// if (!Objects.equals(tempStock.getStockStatus(), StockStatus.OUT.getCode())){ +// //生成回库任务 +// String vehicleNo = taskOutRequest.getVehicleNo(); // 载具号 +// /* 查找一个空库位 */ +// Location emptyLocation = new Location(); +// emptyLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); +// emptyLocation.setAreaId(1); +// List emptyLocations = locationMapper.selLocations(emptyLocation); +// if(emptyLocations == null) { +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("库位查找失败,网络连接异常,请稍后再试"); +// return JSON.toJSONString(rsp); +// } +// if(emptyLocations.isEmpty()){ +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("没有可用库位"); +// return JSON.toJSONString(rsp); +// } +// Location emptyLocationItem = locationUtils.checkCanUse(emptyLocations); +// if(emptyLocationItem == null) { +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("没有可用库位或者库位存在干涉,请稍后再试"); +// return JSON.toJSONString(rsp); +// } +// // 该空库位可用,生成一个入库任务,并将库存表更新库位 +// // 更新库位表,占掉库位 +// Location updateLocation = new Location(); +// updateLocation.setLocationId(emptyLocationItem.getLocationId()); +// updateLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); +// updateLocation.setVehicleId(taskOutRequest.getVehicleNo()); +// locationMapper.modifyLocation(updateLocation); // 占掉库位 +// // ---- 更新库存中库位 +// stockMapper.updateLocationIdWithBetchNo(taskOutRequest.getVehicleNo(), emptyLocationItem.getLocationId()); // 绑定载具和库位 +// // 更新入库单 +// appOrderInMapper.updateStatusWithVehicleNo(vehicleNo, OrderInStatusEnum.IN.getCode()); // 更新入库单为入库中 +// // 添加入库任务 +// Task task = new Task(); +// task.setTaskId(UUID.randomUUID().toString()); +// task.setTaskType(TaskType.IN.getCode()); +// task.setTaskStatus(WmsTaskStatus.NEW.getCode()); +// task.setTaskGroup(UUID.randomUUID().toString()); +// task.setOrigin(tempTask.getDestination()); +// task.setDestination(emptyLocationItem.getLocationId()); +// task.setPickStand(""); +// task.setWeight(0.0); +// task.setVehicleNo(taskOutRequest.getVehicleNo()); +// task.setCreateTime(new Date()); +// task.setUserName("wcs"); +// task.setGoodsId(vehicleNo); +// task.setGoodsName(""); +// task.setOperateNum(0); +// task.setTotalNum(0); +// task.setTaskPriority(1); +// int addTask = taskMapper.addTask(task); +// if(addTask > 0) { +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("存在入库任务,申请成功!"); +// return JSON.toJSONString(rsp); +// } +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("添加入库任务失败,网络连接异常,请稍后再试"); +// return JSON.toJSONString(rsp); +// } +// } + logger.info("更新库存状态成功"); + logger.info("下发出库任务成功"); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("箱号" + taskOutRequest.getVehicleNo() + "生成出库任务成功"); + return JSON.toJSONString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("创建出库任务发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + } + + /** + * 盘点出库 + * + * @param request 请求 + * @return 结果 + */ + @PostMapping("/sendInventoryTask") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String sendInventoryTask(@RequestBody InventoryTask request) { + // TODO 盘点优化 + logger.info("接收到盘库请求:{},ip地址:{}", JSON.toJSONString(request), HttpUtils.getIpAddr(servletRequest)); + ResponseEntity rsp = new ResponseEntity(); + try { + // 根据ip获得站台信息 + List stands = standService.selStands(new Stand(2, HttpUtils.getIpAddr(servletRequest), 0)); + if (stands.size() < 1) {// 请求的地址不是站台电脑 + logger.error("请用站台电脑下发盘库任务"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请用站台电脑下发盘库任务"); + return JSON.toJSONString(rsp); + } + // 判断零件号是否输入 + if (StringUtils.isEmpty(request.getGoodsId())) { + logger.error("未选择盘点零件"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请选择盘点零件"); + return JSON.toJSONString(rsp); + } + // 判断当前零件是否有其他任务 + Task taskQuery2 = new Task(); + taskQuery2.setGoodsId(request.getGoodsId()); + taskQuery2.setVehicleNo(request.getVehicleId()); + List sameGoodsTasks = taskService.selTasks(taskQuery2); + if (sameGoodsTasks.size() > 0) { + logger.error("当前零件存在其他任务"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前零件存在其他任务,请勿执行盘点"); + return JSON.toJSONString(rsp); + } + // 判断库存中是否有此物料 + Stock stockQuery1 = new Stock(); + stockQuery1.setGoodsId(request.getGoodsId()); + stockQuery1.setVehicleId(request.getVehicleId()); + stockQuery1.setStockStatus(StockStatus.OK.getCode()); + List detailStocks = stockService.selStocks(stockQuery1); + List summaryStocks = stockService.selStocksByGoodsId(stockQuery1); + if (detailStocks.size() == 0) {// 当前零件无库存 + logger.error("当前零件无库存"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前零件无库存"); + return JSON.toJSONString(rsp); + } + if (summaryStocks.size() == 0) { + logger.error("当前零件无库存"); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("当前零件无库存"); + return JSON.toJSONString(rsp); + } + for (Stock tempDetailStock : detailStocks) { + // 根据库存生成任务 + // 生成出库任务 + Task task = new Task(); + // 任务编号 + task.setTaskId(WmsUtils.generateId("PDCK")); + //task.setTaskId(UUID); + // 任务类型 + task.setTaskType(TaskType.INVENTORY.getCode()); + // 起点 + task.setOrigin(tempDetailStock.getLocationId()); + // 查找对应库位对应的站台 + Location locationQuery = new Location(); + locationQuery.setLocationId(tempDetailStock.getLocationId()); + Location currentLocation = locationService.selLocations(locationQuery).get(0); + Stand standQuery = new Stand(); + standQuery.setEquipmentId(currentLocation.getEquipmentId()); + standQuery.setAllowIn(0); + standQuery.setAllowOut(1); + standQuery.setStandType(1); + Stand targetStand = standService.selStands(standQuery).get(0); + task.setDestination(targetStand.getStandId()); + task.setPickStand(stands.get(0).getStandId()); + // 重量 + // 查找零件数据,然后计算重量 + PartInfo partInfo = partInfoService.selPartByPartNo(tempDetailStock.getGoodsId()); + task.setWeight(partInfo.getPartWeight() * tempDetailStock.getRealNum());// 重量 + // 载具编号 + task.setVehicleNo(tempDetailStock.getVehicleId()); + // 尺寸 + task.setVehicleSize(1); + task.setCreateTime(new Date()); + // 用户名 + task.setUserName(request.getUserName()); + task.setGoodsId(tempDetailStock.getGoodsId()); + task.setGoodsName(tempDetailStock.getGoodsName()); + task.setProductionDate(tempDetailStock.getProductionDate()); + task.setExpirationDate(tempDetailStock.getExpirationDate()); + task.setOperateNum(0); + task.setTotalNum(tempDetailStock.getRealNum()); + task.setTaskPriority(2); + + tempDetailStock.setIsInventory(1); + tempDetailStock.setInventoryTaskId(task.getTaskId()); + task.setTaskStatus(WmsTaskStatus.NEW.getCode());// 新建出库任务 + task.setTaskGroup(WmsUtils.generateUUIDString());// group + taskService.addTask(task); + // 将库存设定为盘点出库状态 + tempDetailStock.setStockStatus(StockStatus.OUT.getCode()); + stockService.modifyStock(tempDetailStock); + // 将这个托盘上的其他库存都设定为盘点出库状态 + List sameVehicleStock = stockService.selStocks(new Stock(tempDetailStock.getVehicleId())); + for (Stock tempStock : sameVehicleStock) { + if (Objects.equals(tempStock.getStockId(), tempDetailStock.getStockId())) { + continue; + } + tempStock.setStockStatus(StockStatus.OUT.getCode()); + stockService.modifyStock(tempStock); + } + // 将当前的载具设置为出库中 + Vehicle currentVehicle = vehicleService.selVehicleById(tempDetailStock.getVehicleId()); + currentVehicle.setVehicleStatus(VehicleStatus.OUT.getCode()); + vehicleService.modifyVehicle(currentVehicle); + } + + logger.info("创建盘点任务成功,零件号:{}", request.getGoodsId()); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("创建盘库任务成功"); + rsp.setReturnData(summaryStocks.size() > 0 ? summaryStocks.get(0) : new Stock()); + return JSON.toJSONString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("创建盘库任务发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + } + + /** + * 接收WCS发送的任务结果 + * + * @param wmsReceiveTaskResultEntity 请求 + * @return 响应结果 + */ + @PostMapping("/sendTaskResult") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String receiveTaskResult(@RequestBody WmsReceiveTaskResultEntity wmsReceiveTaskResultEntity) { + logger.info("接收到任务反馈:{},ip地址:{}", wmsReceiveTaskResultEntity.toLoggerString(), HttpUtils.getIpAddr(servletRequest)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 获取任务号 + String taskId = wmsReceiveTaskResultEntity.getTaskId(); + Integer result = wmsReceiveTaskResultEntity.getTaskStatus(); + String vehicleNo = wmsReceiveTaskResultEntity.getVehicleNo(); + // 查找对应任务 + Task taskForQuery = new Task(); + taskForQuery.setTaskGroup(taskId); + List tasks = taskService.selTasks(taskForQuery); + if (tasks.size() < 1) { + logger.error("任务号不正确"); + // 返回失败 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("任务号不正确"); + return JSON.toJSONString(rsp); + } + // 设定任务类型 + Integer taskType = tasks.get(0).getTaskType(); + if (result.compareTo(WcsTaskStatus.FINISH.getCode()) == 0) {// 任务完成 + // 回原库位 + if (taskType.compareTo(TaskType.IN.getCode()) == 0) {// 入库任务 + logger.info("入库任务完成,开始处理"); + // 更新载具信息 + Vehicle currentVehicle = vehicleService.selVehicleById(vehicleNo); + currentVehicle.setVehicleStatus(2);// 在库中 + currentVehicle.setCurrentLocation(wmsReceiveTaskResultEntity.getDestination()); + vehicleService.modifyVehicle(currentVehicle); + // 添加库存 + for (Task task : tasks) { + if (!Objects.equals(task.getTaskType(), TaskType.IN.getCode())) { + continue; + } + if (task.getTaskId().startsWith("HK")) {// 回库的库存 + // 查询是不是回库的库存 + Stock stockQuery1 = new Stock(); + stockQuery1.setVehicleId(vehicleNo); + stockQuery1.setGoodsId(task.getGoodsId()); + List backStocks = stockService.selStocks(stockQuery1); + for (Stock tempBackStock : backStocks) { + tempBackStock.setLocationId(task.getDestination()); + tempBackStock.setStockStatus(StockStatus.OK.getCode()); + tempBackStock.setLastUpdateTime(new Date()); + stockService.modifyStock(tempBackStock); + logger.info("更新回库库存"); + } + } else if (task.getTaskId().startsWith("RK")) {// 新增库存 + if (!task.getGoodsId().equals(WmsConstants.EMPTY_STOCK_GOODS_ID)) {// 空箱入库的情况下不生成库存 + Stock exsitStockQuery = new Stock(); + exsitStockQuery.setVehicleId(vehicleNo); + exsitStockQuery.setGoodsId(task.getGoodsId()); + List exsitStocks = stockService.selStocks(exsitStockQuery); + if (exsitStocks.size() > 0) {// 说明该箱子上已有该零件 + // 直接添加数量 + Stock exsitStock = exsitStocks.get(0); + exsitStock.setRemainNum(exsitStock.getRemainNum() + task.getOperateNum()); + exsitStock.setRealNum(exsitStock.getRealNum() + task.getOperateNum()); + exsitStock.setStockStatus(StockStatus.OK.getCode()); + exsitStock.setLocationId(task.getDestination()); + stockService.modifyStock(exsitStock); + logger.info("已有库存增加数量成功:{}", JSON.toJSONString(exsitStock)); + } else { + Stock stockTemp = new Stock(); + stockTemp.setStockId(WmsUtils.generateId("ST")); + stockTemp.setLocationId(task.getDestination()); + stockTemp.setVehicleId(vehicleNo); + stockTemp.setGoodsId(task.getGoodsId()); + // 查询物料信息后设定 + PartInfo partInfo = partInfoService.selPartByPartNo(task.getGoodsId()); + stockTemp.setGoodsName(partInfo.getItemDesc()); + if (Double.parseDouble(partInfo.getSLED()) > 0) { + stockTemp.setProductionDate(task.getProductionDate()); + stockTemp.setShelfLife(Double.parseDouble(partInfo.getSLED())); + stockTemp.setExpirationDate(task.getExpirationDate()); + } + stockTemp.setAvailableNum(task.getOperateNum()); + stockTemp.setRemainNum(task.getOperateNum()); + stockTemp.setRealNum(task.getOperateNum()); + stockTemp.setProviderId(partInfo.getVendorId()); + stockTemp.setProviderName(partInfo.getVendorNameCN()); + stockTemp.setStockStatus(StockStatus.OK.getCode()); + stockTemp.setGoodsStatus(GoodsStatus.OK.getCode()); + stockTemp.setCreateTime(new Date()); + stockTemp.setLastUpdateTime(new Date()); + stockTemp.setIsInventory(0); + stockTemp.setCurrentLocation(task.getDestination()); + logger.info("生成新库存:{}", JSON.toJSONString(stockTemp)); + stockService.addStock(stockTemp); + } + } + } + // 查看当前料箱上还有没有其他料 + logger.info("更新料箱上其他库存"); + Stock stockQuery3 = new Stock(); + stockQuery3.setVehicleId(vehicleNo); + List backStocks3 = stockService.selStocks(stockQuery3); + for (Stock tempBackStock3 : backStocks3) { + if (Objects.equals(tempBackStock3.getGoodsId(), task.getGoodsId())) { + continue; + } + if (tempBackStock3.getRealNum() <= 0) {// 无库存 + stockService.deleteStock(tempBackStock3.getStockId()); + } else { + tempBackStock3.setLocationId(task.getDestination()); + tempBackStock3.setStockStatus(StockStatus.OK.getCode()); + stockService.modifyStock(tempBackStock3); + } + } + } + // 对完成的入库任务进行处理 + for (Task task : tasks) { + // 入库任务完成,先添加任务记录,然后删除任务。 + task.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + task.setFinishTime(new Date()); + taskRecordService.addTask(task); + taskService.deleteTask(task.getTaskId()); + } + } else if (taskType.compareTo(TaskType.OUT.getCode()) == 0) {// 出库任务 + logger.info("出库任务完成,开始处理"); + // 更改载具位置为站台 + Vehicle vehicle = vehicleService.selVehicleById(vehicleNo); + vehicleService.modifyVehicle(vehicle); + // 更新库存当前位置----根据载具号查询到库存,该载具上的所有库存做统一处理。 + Stock stockQueryParam1 = new Stock(); + stockQueryParam1.setVehicleId(vehicleNo); + List tempStockList1 = stockService.selStocks(stockQueryParam1); + for (Stock temp : tempStockList1) { + temp.setStockStatus(StockStatus.TRANS.getCode()); + temp.setCurrentLocation(wmsReceiveTaskResultEntity.getDestination()); + temp.setLastUpdateTime(new Date()); + stockService.modifyStock(temp); + } + for (Task task : tasks) { + if (!Objects.equals(task.getTaskType(), TaskType.OUT.getCode())) { + continue; + } + if (task.getGoodsId().equals(WmsConstants.EMPTY_STOCK_GOODS_ID)) { + task.setTaskStatus(WmsTaskStatus.FINISH.getCode());// 出库完成状态 + task.setFinishTime(new Date()); + taskRecordService.addTask(task); + taskService.deleteTask(task.getTaskId()); + } else { + task.setTaskStatus(WmsTaskStatus.OUT_SUCCESS.getCode());// 出库完成状态 + taskService.executeTask(task); + } + } + } else if (taskType.compareTo(TaskType.INVENTORY.getCode()) == 0) {// 盘点任务 + logger.info("盘点任务完成,开始处理"); + // 更改载具位置为站台 + Vehicle vehicle = vehicleService.selVehicleById(vehicleNo); + vehicleService.modifyVehicle(vehicle); + // 更新库存当前位置----根据载具号查询到库存,该载具上的所有库存做统一处理。 + Stock stockQueryParam1 = new Stock(); + stockQueryParam1.setVehicleId(vehicleNo); + List tempStockList1 = stockService.selStocks(stockQueryParam1); + for (Stock temp : tempStockList1) { + temp.setStockStatus(StockStatus.TRANS.getCode()); + temp.setCurrentLocation(wmsReceiveTaskResultEntity.getDestination()); + temp.setLastUpdateTime(new Date()); + stockService.modifyStock(temp); + } + for (Task task : tasks) { + if (!Objects.equals(task.getTaskType(), TaskType.INVENTORY.getCode())) { + continue; + } + task.setTaskStatus(WmsTaskStatus.OUT_SUCCESS.getCode());// 出库完成状态 + taskService.executeTask(task); + } + } + } else if (result.compareTo(WcsTaskStatus.RUN.getCode()) == 0) {// 任务开始执行 + logger.info("任务开始执行"); + for (Task task : tasks) { + task.setTaskStatus(WmsTaskStatus.RUN.getCode());// 任务开始执行 + taskService.executeTask(task); + } + } else if (result.compareTo(WcsTaskStatus.EXCEPTION.getCode()) == 0) {// 任务开始执行 + logger.info("任务发生异常"); + for (Task task : tasks) { + task.setTaskStatus(WmsTaskStatus.EXCEPTION.getCode());// 任务开始执行 + taskService.executeTask(task); + } + } else if (result.compareTo(WcsTaskStatus.CANCEL.getCode()) == 0) { + if (taskType.compareTo(TaskType.IN.getCode()) == 0) {// 入库任务取消 + logger.info("入库任务取消,开始处理"); + for (Task tempInTask : tasks) { + if (tempInTask.getTaskId().startsWith("HK")) {// 回库任务,需要删除库存 + Stock stockQueryParam1 = new Stock(); + stockQueryParam1.setVehicleId(vehicleNo); + stockQueryParam1.setGoodsId(tempInTask.getGoodsId()); + List tempStockList1 = stockService.selStocks(stockQueryParam1); + for (Stock temp : tempStockList1) { + stockService.deleteStock(temp.getStockId()); + } + } + } + } else if (taskType.compareTo(TaskType.OUT.getCode()) == 0) {// 出库任务取消 + logger.info("出库任务取消,开始处理"); + // 更改载具位置为站台 + logger.info("更新载具为在库中"); + Vehicle vehicle = vehicleService.selVehicleById(vehicleNo); + vehicle.setVehicleStatus(VehicleStatus.ON.getCode()); + vehicleService.modifyVehicle(vehicle); + // 更新库存当前位置----根据载具号查询到库存,该载具上的所有库存做统一处理。 + logger.info("更新库存为正常状态"); + Stock stockQueryParam1 = new Stock(); + stockQueryParam1.setVehicleId(vehicleNo); + List tempStockList1 = stockService.selStocks(stockQueryParam1); + for (Stock temp : tempStockList1) { + temp.setStockStatus(StockStatus.OK.getCode()); + stockService.modifyStock(temp); + } + } else if (taskType.compareTo(TaskType.INVENTORY.getCode()) == 0) {// 盘点任务取消 + logger.info("盘点任务取消,开始处理"); + // 更改载具位置为站台 + logger.info("更新载具为在库中"); + Vehicle vehicle = vehicleService.selVehicleById(vehicleNo); + vehicle.setVehicleStatus(VehicleStatus.ON.getCode()); + vehicleService.modifyVehicle(vehicle); + // 更新库存当前位置----根据载具号查询到库存,该载具上的所有库存做统一处理。 + logger.info("更新库存为正常状态"); + Stock stockQueryParam1 = new Stock(); + stockQueryParam1.setVehicleId(vehicleNo); + List tempStockList1 = stockService.selStocks(stockQueryParam1); + for (Stock temp : tempStockList1) { + temp.setStockStatus(StockStatus.OK.getCode()); + stockService.modifyStock(temp); + } + } + // 更新任务状态 + logger.info("删除取消的任务,并添加任务记录"); + for (Task task : tasks) { + task.setTaskStatus(WmsTaskStatus.CANCEL.getCode());// 任务开始执行 + task.setFinishTime(new Date()); + taskService.deleteTask(task.getTaskId()); + taskRecordService.addTask(task); + } + } + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("发生异常"); + // 返回失败 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("发生异常,请尝试重新发送一次"); + return JSON.toJSONString(rsp); + } + logger.info("获取任务反馈处理成功"); + // 返回失败 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("任务处理成功"); + return JSON.toJSONString(rsp); + } + + /** + * WCS向WMS上报箱子到达拣货口 + * @param pickTask 拣选任务 + * @return 结果 + */ + @PostMapping("/boxArrive") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String boxArrive(@RequestBody PickTaskResponse pickTask) { + logger.info("接收到WCS向WMS上报箱子到达拣货点:{}", JSON.toJSONString(pickTask)); + ResponseEntity response = new ResponseEntity(); + try { + // 根据载具号加拣选点位找到对应的任务----出库任务/盘点任务 + Task taskQueryParam1 = new Task(); + taskQueryParam1.setVehicleNo(pickTask.getVehicleNo()); + taskQueryParam1.setTaskStatus(WmsTaskStatus.OUT_SUCCESS.getCode()); + List tasks = taskService.selTasks(taskQueryParam1); + if (tasks.size() < 1) { + logger.error("当前反馈的箱号{}不存在可以操作的任务", pickTask.getVehicleNo()); + // 返回失败 + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前反馈的箱号没有对应的任务"); + return JSON.toJSONString(response); + } + // 更新当前载具的当前位置为拣选站台 + Vehicle vehicle = vehicleService.selVehicleById(pickTask.getVehicleNo()); + if (vehicle == null) { + logger.error("没查询到对应载具{}", pickTask.getVehicleNo()); + // 返回失败 + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("没查询到对应载具信息"); + return JSON.toJSONString(response); + } + vehicleService.modifyVehicle(vehicle); + // 更新库存位置 + Stock stockQueryParam1 = new Stock(); + stockQueryParam1.setVehicleId(pickTask.getVehicleNo()); + List stocks = stockService.selStocks(stockQueryParam1); + if (stocks.size() < 1) { + logger.error("载具{}没查询到对应库存", pickTask.getVehicleNo()); + // 返回失败 + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("反馈的载具没查询到对应库存"); + return JSON.toJSONString(response); + } + for (Stock tempStock : stocks) { + tempStock.setStockStatus(StockStatus.PICKING.getCode()); + tempStock.setCurrentLocation(pickTask.getPickStand()); + stockService.modifyStock(tempStock); + } + // 更新任务状态 + for (Task tempTaskForPicking : tasks) { + if (Objects.equals(tempTaskForPicking.getTaskType(), TaskType.OUT.getCode())) { + // 更新任务状态 + tempTaskForPicking.setTaskStatus(WmsTaskStatus.PICKING.getCode()); + taskService.executeTask(tempTaskForPicking); + } else if (Objects.equals(tempTaskForPicking.getTaskType(), TaskType.INVENTORY.getCode())) {// 盘点出库 + // 更新任务状态 + tempTaskForPicking.setTaskStatus(WmsTaskStatus.INVENTORY.getCode()); + taskService.executeTask(tempTaskForPicking); + } + } + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("发生异常:{}", e.getMessage()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("发生异常"); + return JSON.toJSONString(response); + } + logger.info("处理成功"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("成功"); + return JSON.toJSONString(response); + } + + /** + * 当前箱子请求回库 + * + * @param request 请求 + * @return 结果 + */ + @PostMapping("/finishPicking") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String finishPicking(@RequestBody FinishPickTaskRequest request) { + logger.info("确认拣货完成:{}", JSON.toJSONString(request)); + ResponseEntity response = new ResponseEntity(); + try { + if (StringUtils.isEmpty(request.getTaskId())) {// + logger.error("任务号为空"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("任务号为空"); + return JSON.toJSONString(response); + } + // 将当前任务信息更新 + Task taskQuery1 = new Task(); + taskQuery1.setTaskId(request.getTaskId()); + List tasks1 = taskService.selTasks(taskQuery1); + if (tasks1.size() < 1) { + logger.error("数据库中查询不到当前正在执行的任务:{}", request.getTaskId()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("数据库中查询不到当前正在执行的任务"); + return JSON.toJSONString(response); + } + Task currentTask = tasks1.get(0); + currentTask.setTaskStatus(WmsTaskStatus.FINISH.getCode()); + if (request.getPickNum() != null) { + currentTask.setOperateNum(request.getPickNum()); + } + if (Objects.equals(currentTask.getTaskType(), TaskType.INVENTORY.getCode())) {// 盘点任务 + currentTask.setOperateNum(currentTask.getTotalNum() - request.getRealNum()); + } + currentTask.setFinishTime(new Date()); + taskRecordService.addTask(currentTask); + taskService.deleteTask(currentTask.getTaskId()); + // 根据这个任务的数据来更新库存 + Stock stockQuery1 = new Stock(); + stockQuery1.setVehicleId(currentTask.getVehicleNo()); + stockQuery1.setGoodsId(currentTask.getGoodsId()); + List stocks = stockService.selStocks(stockQuery1); + if (stocks.size() < 1) { + logger.error("查询不到对应库存"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("查询不到对应库存"); + return JSON.toJSONString(response); + } + Stock currentStock = stocks.get(0); + if (request.getRealNum() != null) { + currentStock.setRealNum(request.getRealNum()); + if (Objects.equals(currentTask.getTaskType(), TaskType.INVENTORY.getCode())) { + currentStock.setRemainNum(currentStock.getRealNum()); + currentStock.setAvailableNum(currentStock.getRealNum()); + } + } else { + currentStock.setRealNum(currentStock.getRealNum() - currentTask.getOperateNum()); + } + + // 判断当前任务的载具号是否还有其他任务 + Task taskQuery2 = new Task(); + taskQuery2.setVehicleNo(request.getVehicleNo()); + taskQuery2.setTaskType(TaskType.OUT.getCode()); + List sameVehicleTasks = taskService.selTasks(taskQuery2); + if (sameVehicleTasks.size() > 0) {// 存在其他任务 + logger.info("当前载具还有其他任务"); + // 库存只更新 + stockService.modifyStock(currentStock); + } else { + // 标记当前箱子入库中 + // 标记当前载具为空箱 + Vehicle currentVehicle = vehicleService.selVehicleById(currentTask.getVehicleNo()); + currentVehicle.setVehicleStatus(VehicleStatus.IN.getCode()); + vehicleService.modifyVehicle(currentVehicle); + //查找到对应的入库站台 + Stand standQuery2 = new Stand(); + standQuery2.setAllowIn(1); + standQuery2.setAllowOut(0); + standQuery2.setStandType(1); + // 判断库存是否为0 + if (currentStock.getRealNum() <= 0) {// 库存为0 + logger.info("拣货后库存为0,空箱回库"); + // 删除当前库存 + stockService.deleteStock(currentStock.getStockId()); + // 根据这个任务的数据来更新库存 + Stock stockQuery2 = new Stock(); + stockQuery2.setVehicleId(currentTask.getVehicleNo()); + List stocks2 = stockService.selStocks(stockQuery2); + // 判断当前载具上是否还有其他库存 + if (stocks2.size() == 0) {// 当前载具是空托 + // 标记当前载具为空箱 + currentVehicle.setIsEmpty(1); + vehicleService.modifyVehicle(currentVehicle); + } else {// 更新载具上其他库存为回库状态 + for (Stock tempSameVehicleStock : stocks2) { + tempSameVehicleStock.setStockStatus(StockStatus.BACKING.getCode()); + stockService.modifyStock(tempSameVehicleStock); + } + } + // 生成空托回库任务---回到原来位置 + Task emptyBackTask = new Task(); + emptyBackTask.setTaskId(WmsUtils.generateId("HK")); + emptyBackTask.setTaskType(TaskType.IN.getCode()); + emptyBackTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + emptyBackTask.setTaskGroup(WmsUtils.generateUUIDString()); + emptyBackTask.setDestination(currentStock.getLocationId()); + // 根据库位查找站台 + Location currentLocation = locationService.selLocations(new Location(currentStock.getLocationId())).get(0); + standQuery2.setEquipmentId(currentLocation.getEquipmentId()); + List availableStands = standService.selStands(standQuery2); + emptyBackTask.setOrigin(availableStands.get(0).getStandId()); + emptyBackTask.setWeight((double) 0); + emptyBackTask.setVehicleNo(currentTask.getVehicleNo()); + emptyBackTask.setVehicleSize(0); + emptyBackTask.setCreateTime(new Date()); + emptyBackTask.setUserName(currentTask.getUserName()); + emptyBackTask.setGoodsId(WmsConstants.EMPTY_STOCK_GOODS_ID); + emptyBackTask.setTaskPriority(1); + taskService.addTask(emptyBackTask); + } else { + logger.info("拣货后库存不为0,回库"); + // 更新库存 + currentStock.setRemainNum(currentStock.getRealNum()); + stockService.modifyStock(currentStock); + // 设置当前载具的其他库存也为回库中 + Stock stockQuery2 = new Stock(); + stockQuery2.setVehicleId(currentTask.getVehicleNo()); + List stocks2 = stockService.selStocks(stockQuery2); + for (Stock sameVehicleStock : stocks2) { + sameVehicleStock.setStockStatus(StockStatus.BACKING.getCode()); + stockService.modifyStock(sameVehicleStock); + } + // 生成入库任务 + Task backTask = new Task(); + backTask.setTaskId(WmsUtils.generateId("HK")); + backTask.setTaskType(TaskType.IN.getCode()); + backTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); + backTask.setTaskGroup(WmsUtils.generateUUIDString()); + backTask.setDestination(currentStock.getLocationId()); + // 根据库位查找站台 + Location currentLocation = locationService.selLocations(new Location(currentStock.getLocationId())).get(0); + standQuery2.setEquipmentId(currentLocation.getEquipmentId()); + List availableStands = standService.selStands(standQuery2); + backTask.setOrigin(availableStands.get(0).getStandId()); + backTask.setWeight((double) 0); + backTask.setVehicleNo(currentTask.getVehicleNo()); + backTask.setVehicleSize(0); + backTask.setCreateTime(new Date()); + backTask.setUserName(currentTask.getUserName()); + backTask.setGoodsId(currentStock.getGoodsId()); + backTask.setGoodsName(currentStock.getGoodsName()); + backTask.setProductionDate(currentStock.getProductionDate()); + backTask.setExpirationDate(currentStock.getExpirationDate()); + backTask.setOperateNum(currentStock.getRealNum()); + backTask.setTotalNum(currentStock.getRealNum()); + backTask.setTaskPriority(1); + taskService.addTask(backTask); + } + } + + logger.info("物料回库成功"); + response.setCode(0); + response.setMessage("成功"); + return JSON.toJSONString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("发生异常:{}", e.getMessage()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("发生异常"); + return JSON.toJSONString(response); + } + } + + /** + * 查找所有任务 + */ + @PostMapping("/getTasks") + @ResponseBody + public String getTasks(@RequestBody TableRequest tableRequest) { + TableResponse tblResp = new TableResponse(); + // 解析请求数据 + if (tableRequest == null || tableRequest.getPage() == null) { + tblResp.setCode(ResponseCode.ERROR.getCode()); + tblResp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(tblResp); + } + // 处理分页信息 + PageDomain pageRequest = tableRequest.getPage(); + String[] orderByArr = {"task_id", "task_type", "task_status", "goods_id", "goods_name", "task_priority", "expiration_date", "create_time"}; + String orderByStr; + + if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { + orderByStr = pageRequest.getOrderBy(); + } else { + // 默认排序 + orderByStr = ""; + } + + Task taskQuery = new Task(); + taskQuery.setTaskType(tableRequest.getParam().getTaskType()); + taskQuery.setGoodsId(tableRequest.getParam().getGoodsId()); + taskQuery.setVehicleNo(tableRequest.getParam().getVehicleNo()); + // 查找对应站台 + List stands = standService.selStands(new Stand(2, HttpUtils.getIpAddr(servletRequest), 0)); + if (stands.size() > 0 && (Objects.equals(taskQuery.getTaskType(), TaskType.OUT.getCode()) || Objects.equals(taskQuery.getTaskType(), TaskType.INVENTORY.getCode()))) { + taskQuery.setPickStand(stands.get(0).getStandId()); + } + PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); + List tasks = taskService.selTasks(taskQuery); + PageInfo taskPageInfo = new PageInfo<>(tasks); + tblResp.setCode(ResponseCode.OK.getCode()); + tblResp.setMessage("查询任务成功!"); + tblResp.setRows(taskPageInfo.getList()); + tblResp.setTotal(taskPageInfo.getTotal()); + return JSON.toJSONString(tblResp); + } + + /** + * 根据参数查询wms任务 + */ + @PostMapping("/getTaskByTask") + @ResponseBody + public String getTaskByTask(@RequestBody Task request) { + ResponseEntity response = new ResponseEntity(); + if (request == null) { + logger.error("请求参数为空"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请求参数为空"); + return JSON.toJSONString(response); + } + List stands = standService.selStands(new Stand(2, HttpUtils.getIpAddr(servletRequest), 0)); + if (stands.size() > 0) { + request.setPickStand(stands.get(0).getStandId()); + } else { + request.setPickStand("other"); + } + List tasks = taskService.selTasks(request); + + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("成功"); + response.setReturnData(tasks.size() > 0 ? tasks.get(0) : null); + return JSON.toJSONString(response); + } +} \ No newline at end of file diff --git a/wms_serve/src/main/java/com/wms/controller/TaskDealController.java b/wms_serve/src/main/java/com/wms/controller/TaskDealController.java new file mode 100644 index 0000000..0310e86 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/TaskDealController.java @@ -0,0 +1,208 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.wms.constants.enums.*; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.table.Location; +import com.wms.entity.app.wcs.WmsReceiveTaskResultEntity; +import com.wms.entity.table.Stock; +import com.wms.entity.table.Task; +import com.wms.service.LocationService; +import com.wms.service.StockService; +import com.wms.service.TaskService; +import com.wms.utils.HttpUtils; +import com.wms.utils.StringUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 这个类处理任务反馈信息 + */ +@Controller +@CrossOrigin +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +@RequestMapping(value = "/wms/taskDeal") +public class TaskDealController extends BaseController{ + private final TaskService taskService; + private final HttpServletRequest servletRequest; + private final TaskController taskController; + private final StockService stockService; + private final LocationService locationService; + + /** + * 更改任务状态 + * + * @param request 请求参数 + * @return 结果 + */ + @PostMapping("/changeTaskStatus") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String changeTaskStatus(@RequestBody Task request) { + logger.info("用户请求更改任务状态,用户名:{},ip地址:{}", request.getUserName(), HttpUtils.getIpAddr(servletRequest)); + logger.info("请求详细:{}", JSON.toJSONString(request)); + ResponseEntity response = new ResponseEntity(); + try { + if (request.getTaskStatus() == null) { + logger.error("请选择任务状态"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("请选择任务状态"); + return JSON.toJSONString(response); + } + // 更改后的任务状态 + int taskStatusRequest = request.getTaskStatus(); + int wcsTaskStatusAfter = 0; + // 查询任务 + Task taskQuery = new Task(); + taskQuery.setTaskId(request.getTaskId()); + List tasks = taskService.selTasks(taskQuery); + if (tasks.size() == 0) { + logger.error("当前任务不存在"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("当前任务不存在"); + return JSON.toJSONString(response); + } + Task currentTask = tasks.get(0); + String newDestination = ""; + if (Objects.equals(currentTask.getTaskType(), TaskType.IN.getCode()) && StringUtils.isNotEmpty(request.getDestination()) && !Objects.equals(request.getDestination(), currentTask.getDestination())) {// 入库任务库位变更 + if (taskStatusRequest != 0) { + logger.error("更改库位必须重置任务"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("更改库位必须重置任务"); + return JSON.toJSONString(response); + } + newDestination = request.getDestination(); + } + if (currentTask.getTaskId().startsWith("HK") && taskStatusRequest == 1) { + logger.error("回库任务不允许取消"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("回库任务不允许取消"); + return JSON.toJSONString(response); + } + String taskGroupId = currentTask.getTaskGroup(); + if (taskStatusRequest == 0) {// 重置任务 + logger.info("任务重置"); + // 将当前taskGroup的所有任务都设置为新建状态 + Task taskQuery2 = new Task(); + taskQuery2.setTaskGroup(taskGroupId); + List tasks2 = taskService.selTasks(taskQuery2); + for (Task task2 : tasks2) { + if (StringUtils.isNotEmpty(newDestination)) { + task2.setDestination(newDestination); + } + task2.setTaskStatus(WmsTaskStatus.NEW.getCode()); + task2.setUserName(request.getUserName()); + taskService.executeTask(task2); + } + // 如果更新了任务,那么该库位信息也要变更 + if (Objects.equals(currentTask.getTaskType(), TaskType.IN.getCode()) && StringUtils.isNotEmpty(newDestination)) { + Location newLocationQuery = new Location(newDestination); + List newLocations = locationService.selLocations(newLocationQuery); + for (Location newLocation : newLocations) { + newLocation.setVehicleId(currentTask.getVehicleNo()); + newLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + locationService.modifyLocation(newLocation); + break; + } + } + // WCS取消任务 + } else if (taskStatusRequest == 1) {// 取消任务 + logger.info("任务取消"); + WmsReceiveTaskResultEntity sendToWmsRequest = new WmsReceiveTaskResultEntity(); + sendToWmsRequest.setTaskId(taskGroupId); + sendToWmsRequest.setTaskStatus(WcsTaskStatus.CANCEL.getCode()); + sendToWmsRequest.setVehicleNo(currentTask.getVehicleNo()); + sendToWmsRequest.setDestination(currentTask.getDestination()); + taskController.receiveTaskResult(sendToWmsRequest); + wcsTaskStatusAfter = 999; + } else if (taskStatusRequest == 2) {// 完成任务 + logger.info("任务完成"); + WmsReceiveTaskResultEntity sendToWmsRequest = new WmsReceiveTaskResultEntity(); + sendToWmsRequest.setTaskId(taskGroupId); + sendToWmsRequest.setTaskStatus(WcsTaskStatus.FINISH.getCode()); + sendToWmsRequest.setVehicleNo(currentTask.getVehicleNo()); + sendToWmsRequest.setDestination(currentTask.getDestination()); + taskController.receiveTaskResult(sendToWmsRequest); + wcsTaskStatusAfter = 3; + } + // 向WCS反馈 + WmsReceiveTaskResultEntity sendToWcsRequest = new WmsReceiveTaskResultEntity(); + sendToWcsRequest.setTaskId(taskGroupId); + sendToWcsRequest.setTaskStatus(wcsTaskStatusAfter); + if (StringUtils.isNotEmpty(newDestination)) { + sendToWcsRequest.setDestination(newDestination); + } + ResponseEntity response1; + for (int i = 0; i < 5; i++) { + response1 = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CHANGE_TASK.getValue(), JSON.toJSONString(sendToWcsRequest)), ResponseEntity.class); + logger.info("向WCS反馈任务状态变更"); + if (Objects.equals(response1.getCode(), 0)) {// 发送成功,则不再发送;不成功,一共尝试发送5次 + break; + } + } + logger.info("更新任务状态成功"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("更新任务状态成功"); + return JSON.toJSONString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("发生异常{}", e.getMessage()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("发生异常" + e.getMessage()); + return JSON.toJSONString(response); + } + } + + /** + * 删除kate清单数据 + * + * @param request 请求参数 + * @return 结果 + */ + @PostMapping("/deleteAllKateTasks") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String deleteAllKateTasks(@RequestBody Task request) { + logger.info("用户请求删除配料任务清单,包括配件、合件、紧急件,用户名:{},ip地址:{}", request.getUserName(), HttpUtils.getIpAddr(servletRequest)); + ResponseEntity response = new ResponseEntity(); + try { + // 有任务正在执行时不允许删除清单 + Task taskQuery = new Task(); + taskQuery.setTaskType(TaskType.OUT.getCode()); + List tasks = taskService.selTasks(taskQuery); + if (tasks.size() > 0) { + for (Task task : tasks) { + if (StringUtils.isNotEmpty(task.getKateTaskId())) {// 卡特任务未做完 + logger.error("卡特任务未做完,不允许删除"); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("卡特任务未做完,不允许删除"); + return JSON.toJSONString(response); + } + } + } + stockService.resetStock(new Stock()); + logger.info("删除任务清单成功"); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("删除任务清单成功"); + return JSON.toJSONString(response); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.error("发生异常{}", e.getMessage()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("发生异常" + e.getMessage()); + return JSON.toJSONString(response); + } + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/TestController.java b/wms_serve/src/main/java/com/wms/controller/TestController.java new file mode 100644 index 0000000..82cae69 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/TestController.java @@ -0,0 +1,237 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.wms.constants.enums.LocationStatus; +import com.wms.constants.enums.ResponseCode; +import com.wms.constants.enums.VehicleStatus; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.table.Location; +import com.wms.entity.table.User; +import com.wms.entity.table.Vehicle; +import com.wms.entity.test.ExcelTest; +import com.wms.service.LocationService; +import com.wms.service.VehicleService; +import com.wms.utils.MyPassword; +import com.wms.utils.excel.ExcelUtils; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; + +/** + * 测试控制类 + */ +@Controller +@CrossOrigin +@RequestMapping(value = "/wms/test") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class TestController extends BaseController { + /** + * 库位服务 + */ + private final LocationService locationService; + private final VehicleService vehicleService; + + @PostMapping("/genLocations") + @ResponseBody + public String genLocations() { + // 巷道1 一共2排45列12层 + for (int i = 3; i <= 6; i++) {// 排- + for (int j = 1; j < 2; j++) {// 列 + for (int k = 1; k <= 5; k++) {// 层 + Location tempLocation = new Location(); + //tempLocation.setLocationId(StringUtils.leftPad(String.valueOf(i), 2, "0") + StringUtils.leftPad(String.valueOf(j), 2, "0") + StringUtils.leftPad(String.valueOf(k), 2, "0")); + tempLocation.setLocationId("A"+ i + "-" + j + "-" + k); + tempLocation.setAreaId(2); + tempLocation.setTunnelId(1); + tempLocation.setEquipmentId(2); + tempLocation.setLocationType(0); + tempLocation.setQueue(1); + tempLocation.setLine(i); + tempLocation.setLayer(k); + tempLocation.setDepth(1); + tempLocation.setIsLock(0); + tempLocation.setLocationStatus(0); + if (locationService.selLocations(tempLocation).size() == 0) { + locationService.addLocation(tempLocation); + } + } + } + } +// // 巷道2 +// for (int i = 3; i <= 4; i++) {// 排 +// for (int j = 3; j <= 34; j++) {// 列 +// Location tempLocation = new Location(); +// tempLocation.setLocationId(StringUtils.leftPad(String.valueOf(i), 2, "0") + StringUtils.leftPad(String.valueOf(j), 2, "0") + StringUtils.leftPad(String.valueOf(13), 2, "0")); +// tempLocation.setAreaId(1); +// tempLocation.setTunnelId(2); +// tempLocation.setEquipmentId(2); +// tempLocation.setLocationType(0); +// tempLocation.setQueue(i); +// tempLocation.setLine(j); +// tempLocation.setLayer(13); +// tempLocation.setDepth(1); +// tempLocation.setIsLock(0); +// tempLocation.setLocationStatus(0); +// locationService.addLocation(tempLocation); +// } +// } + return "success"; + } + + @PostMapping("/genETagLocations") + @ResponseBody + public String genETagLocations() { +// for (int i = 1; i <= 40; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("A" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("1"); +// eTagLocation.setStandId("2001"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 70; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("B" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("2"); +// eTagLocation.setStandId("2002"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 70; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("C" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("3"); +// eTagLocation.setStandId("2003"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 70; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("D" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("4"); +// eTagLocation.setStandId("2004"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 70; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("E" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("5"); +// eTagLocation.setStandId("2005"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 70; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("F" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("6"); +// eTagLocation.setStandId("2006"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 70; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("G" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("7"); +// eTagLocation.setStandId("2007"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } +// for (int i = 1; i <= 40; i++) { +// ETagLocation eTagLocation = new ETagLocation(); +// eTagLocation.setLocationId("H" + StringUtils.leftPad(String.valueOf(i), 2, "0")); +// eTagLocation.setAreaId("8"); +// eTagLocation.setStandId("2008"); +// eTagLocation.setSequenceNo(i); +// eTagLocationService.addETagLocation(eTagLocation); +// } + return "success"; + } + + /** + * 测试导入 + * + * @param file 文件 + * @return 导入结果 + */ + @PostMapping("/testExcelImport") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String testExcelImport(@RequestPart("file") MultipartFile file) { + ResponseEntity response = new ResponseEntity(); + try { + List tests = ExcelUtils.readMultipartFile(file, ExcelTest.class); + for (ExcelTest test : tests) { + // 更新库位 + Location locationQuery = new Location(); + locationQuery.setLocationId(test.getLocationId()); + List locations = locationService.selLocations(locationQuery); + if (locations.size() > 0) { + Location currentLocation = locations.get(0); + currentLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + currentLocation.setVehicleId("XZBK" + StringUtils.leftPad(test.getVehicleId().trim(), 4, "0")); + locationService.modifyLocation(currentLocation); + // 添加载具 + Vehicle vehicle = new Vehicle(); + vehicle.setVehicleId("XZBK" + StringUtils.leftPad(test.getVehicleId().trim(), 4, "0")); + vehicle.setCurrentLocation(test.getLocationId()); + vehicle.setVehicleStatus(VehicleStatus.ON.getCode()); + vehicle.setIsEmpty(1); + if (vehicleService.selVehicleById(test.getVehicleId()) == null) { + vehicleService.addVehicle(vehicle); + } else { + vehicleService.modifyVehicle(vehicle); + } + } + } + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("导入excel成功"); + response.setReturnData(tests); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("导入excel发生错误"); + } + logger.info(JSON.toJSONString(response)); + return JSON.toJSONString(response); + } + + /** + * 测试导出 + * + * @param response 请求 + */ + @GetMapping("/testExcelExport") + @ResponseBody + public void testExcelExport(HttpServletResponse response) { + List tests = new ArrayList<>(); + ExcelTest temp1 = new ExcelTest("010101", "XZBK0001"); + ExcelTest temp2 = new ExcelTest("020101", "XZBK0002"); + tests.add(temp1); + tests.add(temp2); + ExcelUtils.export(response, "测试导出", tests, ExcelTest.class); + } + + @PostMapping("/genPassword") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String genPassword(@RequestBody User user) { + ResponseEntity response = new ResponseEntity(); + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("创建密码成功"); + response.setReturnData(MyPassword.encrypt(user.getLoginPassword())); + return JSON.toJSONString(response); + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/UserController.java b/wms_serve/src/main/java/com/wms/controller/UserController.java new file mode 100644 index 0000000..6357295 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/UserController.java @@ -0,0 +1,205 @@ +package com.wms.controller; + +import com.alibaba.fastjson2.JSON; +import com.wms.constants.enums.ResponseCode; +import com.wms.entity.app.MenuEntity; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.UserConfigEntity; +import com.wms.entity.table.Menu; +import com.wms.entity.table.User; +import com.wms.service.MenuService; +import com.wms.service.UserService; +import com.wms.utils.MyPassword; +import com.wms.constants.WmsConstants; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.web.bind.annotation.*; + +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; + +/** + * WMS用户控制类 + * @author 梁州 + * @date 2023/2/14 + */ +@Controller +@CrossOrigin +@RequestMapping(value = "/wms/user") +public class UserController extends BaseController { + /** + * 用户服务 + */ + final UserService userService; + /** + * 菜单服务 + */ + final MenuService menuService; + + @Autowired + public UserController(UserService userService, MenuService menuService) { + this.userService = userService; + this.menuService = menuService; + } + + /** + * 带密码登录 + * @param user 用户 + * @return 结果 + */ + @PostMapping("/loginWithAuth") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String loginWithAuth(@RequestBody User user) { + logger.info("WMS前端用户登录,登录账户名:{}", user.getLoginAccount()); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 查找对应用户的信息 + User userForQuery = new User(); + userForQuery.setLoginAccount(user.getLoginAccount()); + List waitForAuthUsers = userService.selectUsers(userForQuery); + if (waitForAuthUsers.size() < 1) { + logger.error("用户不存在,登录账户名:{}", user.getLoginAccount()); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("用户不存在"); + return JSON.toJSONString(rsp); + } + // 验证密码 + User waitForAuthUser = waitForAuthUsers.get(0); + if (!Objects.equals(MyPassword.encrypt(user.getLoginPassword()), waitForAuthUser.getLoginPassword())) { + logger.error("密码错误,登录账户名:{}", user.getLoginAccount()); + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("密码错误"); + return JSON.toJSONString(rsp); + } + // 当前用户 + User currentUser = waitForAuthUsers.get(0); + + // 返回成功 + logger.info("登录成功,登录账户名:{}", currentUser.getLoginAccount()); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("登录成功"); + // 返回用户数据 + rsp.setReturnData(generateUserInfo(currentUser)); + return JSON.toJSONString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("数据库错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + } + + /** + * 无密码登录 + * @param user 用户 + * @return 结果 + */ + @PostMapping("/loginWithoutAuth") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String loginWithoutAuth(@RequestBody User user) { + logger.info("WMS前端用户登录,登录账户名:{}", user.getLoginAccount()); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + // 查找对应用户的信息 + User userForQuery = new User(); + userForQuery.setLoginAccount(user.getLoginAccount()); + List waitForAuthUsers = userService.selectUsers(userForQuery); + if (waitForAuthUsers.size() < 1) { + // 返回错误 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("用户不存在"); + return JSON.toJSONString(rsp); + } + User currentUser = waitForAuthUsers.get(0); + // 返回成功 + logger.info("登录成功,登录账户名:{}", currentUser.getLoginAccount()); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("登录成功"); + // 返回用户数据 + rsp.setReturnData(generateUserInfo(currentUser)); + return JSON.toJSONString(rsp); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("数据库错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("数据库错误"); + return JSON.toJSONString(rsp); + } + } + + /** + * 构造用户信息(菜单、按钮等权限) + * @param currentUser 当前用户 + * @return 用户信息 + */ + private UserConfigEntity generateUserInfo (User currentUser) { + UserConfigEntity userConfigEntity = new UserConfigEntity(); + try { + List menus = menuService.selMenuByRoleId(currentUser.getRoleId()); + List menuList = new LinkedList<>(); + // 查找一级菜单 + for (Menu firstMenu : menus) { + if (WmsConstants.ROOT_MENU_ID.equals(firstMenu.getParentId())) {// 查找到所有的一级子菜单 + MenuEntity tempFirstMenu = new MenuEntity(); + tempFirstMenu.setId(firstMenu.getMenuId());// ID + tempFirstMenu.setLabelName(firstMenu.getLabelName());// 菜单显示名称 + tempFirstMenu.setIconValue(firstMenu.getIconValue());// 图标 + tempFirstMenu.setPath(firstMenu.getPath());// 路径 + // 设置子菜单 + List tempFirstMenuChildren = new LinkedList<>(); + for (Menu secondMenu : menus) { + if (firstMenu.getMenuId().equals(secondMenu.getParentId())) { + MenuEntity tempSecondMenu = new MenuEntity(); + tempSecondMenu.setId(secondMenu.getMenuId());// ID + tempSecondMenu.setLabelName(secondMenu.getLabelName());// 菜单显示名称 + tempSecondMenu.setIconValue(secondMenu.getIconValue());// 图标 + tempSecondMenu.setPath(secondMenu.getPath());// 路径 + // 设置子菜单 + List tempSecondMenuChildren = new LinkedList<>(); + for (Menu thirdMenu : menus) { + if (secondMenu.getMenuId().equals(thirdMenu.getParentId())) { + MenuEntity tempThirdMenu = new MenuEntity(); + tempSecondMenu.setId(thirdMenu.getMenuId());// ID + tempSecondMenu.setLabelName(thirdMenu.getLabelName());// 菜单显示名称 + tempSecondMenu.setIconValue(thirdMenu.getIconValue());// 图标 + tempSecondMenu.setPath(thirdMenu.getPath());// 路径 + // 添加按钮 + tempSecondMenuChildren.add(tempThirdMenu); + } + } + tempSecondMenu.setChildren(tempSecondMenuChildren); + // 添加二级菜单 + tempFirstMenuChildren.add(tempSecondMenu); + } + } + tempFirstMenu.setChildren(tempFirstMenuChildren); + // 添加一级菜单 + menuList.add(tempFirstMenu); + } + } + logger.info("构造用户信息成功,当前用户:{}", currentUser.toLoggerString()); + // 设置返回信息 + userConfigEntity.setUser(currentUser); + userConfigEntity.setMenuList(menuList); + } catch (Exception e) { + logger.error("构造用户信息失败,当前用户:{}", currentUser.toLoggerString()); + } + return userConfigEntity; + } +} diff --git a/wms_serve/src/main/java/com/wms/controller/others/ContainerController.java b/wms_serve/src/main/java/com/wms/controller/others/ContainerController.java new file mode 100644 index 0000000..d84ae27 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/others/ContainerController.java @@ -0,0 +1,71 @@ +package com.wms.controller.others; + +import com.alibaba.fastjson2.JSON; +import com.wms.controller.BaseController; +import com.wms.entity.app.container.ContainerApiLocalResponse; +import com.wms.entity.app.container.CreateInstoreTaskRequest; +import com.wms.entity.app.container.CreateInstoreTaskResponse; +import com.wms.entity.app.container.TaskStateNoticeRequest; +import com.wms.service.ContainerService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + + +/** + * 四向车交互 + * @author icewint + */ +@Slf4j +@RestController +@CrossOrigin +@RequestMapping(value = "/api/container") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class ContainerController extends BaseController { + + + private final ContainerService containerService; + + /** + * 接收四向车扫码入库信息 + * @param request 请求信息 + * @return 返回信息 + */ + @PostMapping("/createInstoreTask") + public CreateInstoreTaskResponse createInstoreTask(@RequestBody @Validated CreateInstoreTaskRequest request) { + try { + log.info("四向车扫码入库请求:{}", JSON.toJSONString(request)); + CreateInstoreTaskResponse instoreTask = containerService.createInstoreTask(request); + log.info("四向车扫码入库信息返回:{}", JSON.toJSONString(instoreTask)); + return instoreTask; + }catch (Exception e){ + log.info("四向车扫码入库失败,出现异常,请稍后再试"); + return new CreateInstoreTaskResponse("400", "四向车扫码入库异常,请稍后再试"); + } + + } + + + /** + * 接收四向车任务状态通知 + * @param request 请求信息 + * @return 响应信息 + */ + @PostMapping("/taskStateNotice") + public ContainerApiLocalResponse taskStateNotice(@RequestBody @Validated TaskStateNoticeRequest request){ +// try { + log.info("四向车任务状态通知请求:{}", JSON.toJSONString(request)); + ContainerApiLocalResponse containerApiLocalResponse = containerService.taskStateNotice(request); + log.info("四向车任务状态通知信息返回:{}", JSON.toJSONString(containerApiLocalResponse)); + return containerApiLocalResponse; +// }catch (Exception e){ +// log.info("接收到任务反馈失败异常,请稍后再试"); +// return new ContainerApiLocalResponse("400", "接收到任务反馈失败,请稍后再试"); +// } + + } + + +} diff --git a/wms_serve/src/main/java/com/wms/controller/others/MesController.java b/wms_serve/src/main/java/com/wms/controller/others/MesController.java new file mode 100644 index 0000000..7d5b8c5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/others/MesController.java @@ -0,0 +1,57 @@ +package com.wms.controller.others; + +import com.wms.controller.BaseController; +import com.wms.entity.app.mes.CheckNoticeRequest; +import com.wms.entity.app.mes.MesApiLocalResponse; +import com.wms.entity.app.mes.OutNoticeRequest; +import com.wms.entity.app.mes.ReceiptInRequest; +import com.wms.service.MesService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 和 mes 交互使用的 controller + * @author icewint + */ +@RestController +@CrossOrigin +@RequestMapping(value = "/api/mes") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class MesController extends BaseController { + + private final MesService mesService; + + /** + * mes 入库之前用此接口推送信息 IF201 + * @param request 请求信息 + * @return 返回信息 + */ + @PostMapping("/ReceiptIn") + public MesApiLocalResponse receiptIn(@RequestBody @Validated ReceiptInRequest request) { + return mesService.receiptIn(request); + } + + + /** + * mes 出库 IF205(IF203) + * @param request 请求信息 + * @return 返回信息 + */ + @PostMapping("/OutNotice") + public MesApiLocalResponse outNotice(@RequestBody @Validated OutNoticeRequest request) { + return mesService.outNotice(request); + } + + /** + * mes 盘点通知单 IF206 + * @return 返回信息 + */ + @PostMapping("/CheckNotice") + public MesApiLocalResponse checkNotice(@RequestBody @Validated CheckNoticeRequest request) { + return mesService.checkNotice(request); + } + + +} diff --git a/wms_serve/src/main/java/com/wms/controller/others/WcsController.java b/wms_serve/src/main/java/com/wms/controller/others/WcsController.java new file mode 100644 index 0000000..cf917f2 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/controller/others/WcsController.java @@ -0,0 +1,346 @@ +package com.wms.controller.others; + +import com.alibaba.fastjson2.JSON; +import com.wms.bussiness.TaskOperation; +import com.wms.constants.enums.*; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.container.ContainerApiLocalResponse; +import com.wms.entity.app.mes.MesApiLocalResponse; +import com.wms.entity.app.mes.SendMesPutInGoodsRequest; +import com.wms.entity.app.wcs.RequireInRequest; +import com.wms.entity.app.wcs.WmsReceiveTaskResultEntity; +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.table.*; +import com.wms.mapper.LocationMapper; +import com.wms.mapper.StockMapper; +import com.wms.mapper.TaskMapper; +import com.wms.service.StockService; +import com.wms.service.TaskService; +import com.wms.utils.HttpUtils; +import com.wms.utils.storage.LocationUtils; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +@Slf4j +@RestController +@CrossOrigin +@RequestMapping(value = "/api/wcs") +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class WcsController { + + /** + * 任务操作类 + */ + private final TaskOperation taskOperation; + + /** + * 库存 Mapper + */ + private final StockMapper stockMapper; + + /** + * 库位 Mapper + */ + private final LocationMapper locationMapper; + + /** + * 任务 Mapper + */ + private final TaskMapper taskMapper; + + + /** + * 库存服务 + */ + private final StockService stockService; + /** + * 库位操作类 + */ + private final LocationUtils locationUtils; + + /** + * 请求头部信息 + */ + private final HttpServletRequest servletRequest; + + /** + * 任务服务 + */ + private final TaskService taskService; + + /** + * 订单入库 Mapper + */ + private final com.wms.mapper.AppOrderInMapper appOrderInMapper; + + + /** + * 立库申请入库 + * @param request 请求信息 + * @return 返回信息 + */ + @PostMapping("/requestIn") + public ResponseEntity requestIn(@RequestBody @Validated RequireInRequest request) { + try { + log.info(String.format("%s 点位请求入库:%s",request.getPoint(), request.getVehicleNo())); + /* 校验库存是否存在对应箱号的入库单 */ + AppOrderIn queryVehicleNoOrder = new AppOrderIn(); + queryVehicleNoOrder.setVehicleNo(request.getVehicleNo()); + queryVehicleNoOrder.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); + List queryVehicleNoOrderListResult = appOrderInMapper.select(queryVehicleNoOrder); + if(queryVehicleNoOrderListResult == null) { + return new ResponseEntity(-1, String.format("该条码数据异常,请重试,条码号:%s", request.getVehicleNo())); + } + String code = request.getVehicleNo(); + if(code.length() == 22) { // 没有绑定的载具,查找直接单包的数据 + //String code = request.getVehicleNo(); +// if(code.length() != 22) { +// return new ResponseEntity(999, "条码长度错误" + code.length(), null); +// } + // 前八位是零件号,后面六位是批次,后面一位是班次,最后五位是数量 + String goodsId = code.substring(0, 10); // 物料编码 + String batchNo = code.substring(0, 16); // 批次 ---- 这个批次应该是料号加中间六位 + //String shift = code.substring(16, 17); // 班次 + String productionDate = code.substring(10, 16); //生产日期 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); + Date date; + try { + // 将字符串解析成Date对象 + date = dateFormat.parse(productionDate); + } catch (ParseException e) { + throw new RuntimeException(e); + } + String goodsNumStr = code.substring(17, 22); // 数量字符串 + if(!goodsNumStr.matches("[0-9]+")) { + return new ResponseEntity(999, "数量格式错误", null); + } + BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量 + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setBatchNo(batchNo); + appOrderIn.setGoodsNum(goodsNum); + appOrderIn.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); + List selectRows = appOrderInMapper.select(appOrderIn); + if(selectRows == null || selectRows.isEmpty()) { + return new ResponseEntity(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null); + } + AppOrderIn orderIn = selectRows.get(0); // 这条数据 + /* 查找一个空库位 */ + Location emptyLocation = new Location(); + emptyLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + emptyLocation.setAreaId(1); + List emptyLocations = locationMapper.selLocations(emptyLocation); + if(emptyLocations == null) { + return new ResponseEntity(-1, "库位查找失败,网络连接异常,请稍后再试"); + } + if(emptyLocations.isEmpty()){ + return new ResponseEntity(-1, "没有可用库位"); + } + Location emptyLocationItem = locationUtils.checkCanUse(emptyLocations); + if(emptyLocationItem == null) { + return new ResponseEntity(-1, "没有可用库位或者库位存在干涉,请稍后再试"); + } + // 该空库位可用,生成一个入库任务,并将库存表更新库位 + // 更新库位表,占掉库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(emptyLocationItem.getLocationId()); + updateLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + updateLocation.setVehicleId(request.getVehicleNo()); + locationMapper.modifyLocation(updateLocation); // 占掉库位 + // ---- 更新库存中库位 + stockMapper.updateLocationIdWithBetchNo(request.getVehicleNo(), emptyLocationItem.getLocationId()); // 绑定载具和库位 + // 更新入库单 + AppOrderIn orderInUpdate = new AppOrderIn(); + orderInUpdate.setRowId(orderIn.getRowId()); + orderInUpdate.setOrderStatus(OrderInStatusEnum.IN.getCode()); + orderInUpdate.setUpdateTime(LocalDateTime.now()); + //orderInUpdate.setProductionDate(date); + appOrderInMapper.update(orderInUpdate); // 更新入库单为入库中 + // 添加入库任务 + Task task = new Task(); + task.setTaskId(UUID.randomUUID().toString()); + task.setTaskType(TaskType.IN.getCode()); + task.setTaskStatus(WmsTaskStatus.NEW.getCode()); + task.setTaskGroup(UUID.randomUUID().toString()); + task.setOrigin(request.getPoint()); + task.setDestination(emptyLocationItem.getLocationId()); + task.setPickStand(""); + task.setWeight(0.0); + task.setVehicleNo(request.getVehicleNo()); + task.setCreateTime(new Date()); + task.setUserName("wcs"); + task.setGoodsId(goodsId); + task.setGoodsName(""); + task.setOperateNum(0); + task.setTotalNum(0); + task.setTaskPriority(1); + task.setProductionDate(date); + task.setRemark1(appOrderIn.getRemark()); + //appOrderInMapper.insert(orderIn); + int addTask = taskMapper.addTask(task); + if(addTask > 0) { + //stockMapper.insert(task); + return new ResponseEntity(0, "存在入库任务,申请成功"); + } + return new ResponseEntity(-1, "添加入库任务失败,网络连接异常,请稍后再试"); + } else if (code.length() == 19) { + // 绑定完载具的数据入库 + //根据母码去找入库单 + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setVehicleNo(request.getVehicleNo()); + appOrderIn.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); + List selectRows = appOrderInMapper.select(appOrderIn); + if(selectRows == null || selectRows.isEmpty()) { + return new ResponseEntity(999, String.format("条码找不到入库单,无法绑定,条码:%s", code), null); + } + String vehicleNo = request.getVehicleNo(); // 载具号 + /* 查找一个空库位 */ + Location emptyLocation = new Location(); + emptyLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); + emptyLocation.setAreaId(1); + List emptyLocations = locationMapper.selLocations(emptyLocation); + if(emptyLocations == null) { + return new ResponseEntity(-1, "库位查找失败,网络连接异常,请稍后再试"); + } + if(emptyLocations.isEmpty()){ + return new ResponseEntity(-1, "没有可用库位"); + } + Location emptyLocationItem = locationUtils.checkCanUse(emptyLocations); + if(emptyLocationItem == null) { + return new ResponseEntity(-1, "没有可用库位或者库位存在干涉,请稍后再试"); + } + // 该空库位可用,生成一个入库任务,并将库存表更新库位 + // 更新库位表,占掉库位 + Location updateLocation = new Location(); + updateLocation.setLocationId(emptyLocationItem.getLocationId()); + updateLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + updateLocation.setVehicleId(request.getVehicleNo()); + locationMapper.modifyLocation(updateLocation); // 占掉库位 + // ---- 更新库存中库位 + stockMapper.updateLocationIdWithBetchNo(request.getVehicleNo(), emptyLocationItem.getLocationId()); // 绑定载具和库位 + // 更新入库单 + appOrderInMapper.updateStatusWithVehicleNo(vehicleNo, OrderInStatusEnum.IN.getCode()); // 更新入库单为入库中 +// List selectRows = appOrderInMapper.selectWithVehicle(request.getVehicleNo()); +// Date productionDate = new Date(); + //添加入库任务 + Task task = new Task(); + task.setTaskId(UUID.randomUUID().toString()); + task.setTaskType(TaskType.IN.getCode()); + task.setTaskStatus(WmsTaskStatus.NEW.getCode()); + task.setTaskGroup(UUID.randomUUID().toString()); + task.setOrigin(request.getPoint()); + task.setDestination(emptyLocationItem.getLocationId()); + task.setPickStand(""); + task.setWeight(0.0); + task.setVehicleNo(request.getVehicleNo()); + task.setCreateTime(new Date()); + task.setUserName("wcs"); + task.setGoodsId(vehicleNo); + task.setGoodsName(""); + task.setOperateNum(0); + task.setTotalNum(0); + task.setTaskPriority(1); + //task.setProductionDate(); + //appOrderInMapper.insertList(emptyLocations); + int addTask = taskMapper.addTask(task); + if(addTask > 0) { + return new ResponseEntity(0, "存在入库任务,申请成功"); + } + return new ResponseEntity(-1, "添加入库任务失败,网络连接异常,请稍后再试"); + } + return new ResponseEntity(999, "条码长度错误" + code.length(), null); + }catch (Exception e){ + log.info("入库申请失败,出现异常,请稍后再试"); + return new ResponseEntity(-1, "入库申请失败,网络连接异常,请稍后再试"); + } + } + + /** + * 收到 wcs 返回的任务状态 + * @param wmsReceiveTaskResultEntity wcs请求值 + * @return 返回的信息 + */ + @PostMapping("/sendTaskResult") + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public ResponseEntity receiveTaskResult(@RequestBody @Validated WmsReceiveTaskResultEntity wmsReceiveTaskResultEntity) { + try{ + log.info("接收到任务反馈1:{},ip地址:{}", wmsReceiveTaskResultEntity.toLoggerString(), HttpUtils.getIpAddr(servletRequest)); + // 获取任务号 + String taskId = wmsReceiveTaskResultEntity.getTaskId(); + Integer taskStatus = wmsReceiveTaskResultEntity.getTaskStatus(); + String vehicleNo = wmsReceiveTaskResultEntity.getVehicleNo(); + if (taskId == null){ + log.info("获取任务号失败"); + } + log.info("获取任务号成功"); + // 查找对应任务 + Task taskForQuery = new Task(); + taskForQuery.setTaskId(taskId); + List tasks = taskService.selTasks(taskForQuery); + if(tasks == null || tasks.isEmpty()) { + log.info("没有找到对应的任务"); + return new ResponseEntity(-1, "没有找到对应的任务"); + } + Task task = tasks.get(0); + if(taskStatus.equals(WmsTaskStatus.FINISH.getCode())) { // 任务完成 + boolean completedTask = taskOperation.completeTask(task); + if(!completedTask) { + log.info("任务完成失败"); + return new ResponseEntity(-1, "任务完成失败,请稍后再试"); + } + log.info("任务完成成功"); + return new ResponseEntity(0, "任务完成成功"); + } + if(taskStatus.equals(WmsTaskStatus.CANCEL.getCode())) { // 任务取消 + boolean cancelledTask = taskOperation.cancelTask(task); + if(!cancelledTask) { + return new ResponseEntity(-1, "任务取消失败,请稍后再试"); + } + return new ResponseEntity(0, "任务取消成功"); + } + log.info("不处理的状态"); + return new ResponseEntity(0, "不处理的状态"); + }catch (Exception e){ + log.error("接收到任务反馈失败,ip地址:{}", HttpUtils.getIpAddr(servletRequest), e); + return new ResponseEntity(-1, "接收到任务反馈失败,请稍后再试"); + } + + } +} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wms_serve/src/main/java/com/wms/entity/BaseEntity.java b/wms_serve/src/main/java/com/wms/entity/BaseEntity.java new file mode 100644 index 0000000..36ab926 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/BaseEntity.java @@ -0,0 +1,9 @@ +package com.wms.entity; + +import com.alibaba.fastjson2.JSON; + +public class BaseEntity { + public String toLoggerString() { + return JSON.toJSONString(this); + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/FinishPickTaskRequest.java b/wms_serve/src/main/java/com/wms/entity/app/FinishPickTaskRequest.java new file mode 100644 index 0000000..77377bd --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/FinishPickTaskRequest.java @@ -0,0 +1,139 @@ +package com.wms.entity.app; + +/** + * 完成当前载具拣货任务实体类 + */ +public class FinishPickTaskRequest { + /** + * 任务id + */ + private String taskId; + /** + * 卡特任务id + */ + private String kateTaskId; + /** + * 料盒号 + */ + private String boxNo; + /** + * 零件号 + */ + private String partNo; + /** + * 需求/分配数量 + */ + private Integer needNum; + /** + * 实际库存 + */ + private Integer realNum; + /** + * 实际拣货数量 + */ + private Integer realPickNum; + /** + * 载具号 + */ + private String vehicleNo; + /** + * 出库数量 + */ + private Integer goodsNum; + /** + * 重量 + */ + private Double weight; + /** + * 拣选数量 + */ + private Integer pickNum; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getKateTaskId() { + return kateTaskId; + } + + public void setKateTaskId(String kateTaskId) { + this.kateTaskId = kateTaskId; + } + + public String getBoxNo() { + return boxNo; + } + + public void setBoxNo(String boxNo) { + this.boxNo = boxNo; + } + + public String getPartNo() { + return partNo; + } + + public void setPartNo(String partNo) { + this.partNo = partNo; + } + + public Integer getNeedNum() { + return needNum; + } + + public void setNeedNum(Integer needNum) { + this.needNum = needNum; + } + + public Integer getRealNum() { + return realNum; + } + + public void setRealNum(Integer realNum) { + this.realNum = realNum; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getRealPickNum() { + return realPickNum; + } + + public void setRealPickNum(Integer realPickNum) { + this.realPickNum = realPickNum; + } + + public Integer getGoodsNum() { + return goodsNum; + } + + public void setGoodsNum(Integer goodsNum) { + this.goodsNum = goodsNum; + } + + public Double getWeight() { + return weight; + } + + public void setWeight(Double weight) { + this.weight = weight; + } + + public Integer getPickNum() { + return pickNum; + } + + public void setPickNum(Integer pickNum) { + this.pickNum = pickNum; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/FinishVehicleAndPartRequest.java b/wms_serve/src/main/java/com/wms/entity/app/FinishVehicleAndPartRequest.java new file mode 100644 index 0000000..0b57214 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/FinishVehicleAndPartRequest.java @@ -0,0 +1,31 @@ +package com.wms.entity.app; + +/** + * 完成当前载具的当次拣货任务 + */ +public class FinishVehicleAndPartRequest { + /** + * wms任务号 + */ + private String wmsTaskId; + /** + * 实际拣货数量 + */ + private Integer realPickNum; + + public String getWmsTaskId() { + return wmsTaskId; + } + + public void setWmsTaskId(String wmsTaskId) { + this.wmsTaskId = wmsTaskId; + } + + public Integer getRealPickNum() { + return realPickNum; + } + + public void setRealPickNum(Integer realPickNum) { + this.realPickNum = realPickNum; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/InventoryTask.java b/wms_serve/src/main/java/com/wms/entity/app/InventoryTask.java new file mode 100644 index 0000000..bba21a6 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/InventoryTask.java @@ -0,0 +1,57 @@ +package com.wms.entity.app; + +import com.wms.entity.BaseEntity; + +/** + * 盘点任务信息 + */ +public class InventoryTask extends BaseEntity { + /** + * 零件号 + */ + private String goodsId; + /** + * 料箱号 + */ + private String vehicleId; + /** + * 库区id + */ + private String areaId; + /** + * 用户 + */ + private String userName; + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getVehicleId() { + return vehicleId; + } + + public void setVehicleId(String vehicleId) { + this.vehicleId = vehicleId; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/LayerLocation.java b/wms_serve/src/main/java/com/wms/entity/app/LayerLocation.java new file mode 100644 index 0000000..956a04f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/LayerLocation.java @@ -0,0 +1,36 @@ +package com.wms.entity.app; + +import com.wms.entity.table.Location; + +import java.util.List; + +/** + * 按层划分的库位实体类 + */ +public class LayerLocation { + /** + * 当前层 + */ + private Integer layer; + + /** + * 当前层的所有库位 + */ + private List currentColLocations; + + public Integer getLayer() { + return layer; + } + + public void setLayer(Integer layer) { + this.layer = layer; + } + + public List getCurrentColLocations() { + return currentColLocations; + } + + public void setCurrentColLocations(List currentColLocations) { + this.currentColLocations = currentColLocations; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/MenuEntity.java b/wms_serve/src/main/java/com/wms/entity/app/MenuEntity.java new file mode 100644 index 0000000..a779176 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/MenuEntity.java @@ -0,0 +1,70 @@ +package com.wms.entity.app; + +import java.util.List; + +public class MenuEntity { + /** + * 菜单Id + */ + private String id; + + /** + * 菜单名称 + */ + private String labelName; + + /** + * 图标值 + */ + private String iconValue; + + /** + * 地址 + */ + private String path; + + /** + * 子菜单 + */ + private List children; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLabelName() { + return labelName; + } + + public void setLabelName(String labelName) { + this.labelName = labelName; + } + + public String getIconValue() { + return iconValue; + } + + public void setIconValue(String iconValue) { + this.iconValue = iconValue; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/ResponseEntity.java b/wms_serve/src/main/java/com/wms/entity/app/ResponseEntity.java new file mode 100644 index 0000000..53053e2 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/ResponseEntity.java @@ -0,0 +1,62 @@ +package com.wms.entity.app; + +import com.wms.entity.BaseEntity; + +/** + * 接口响应实体类 + */ +public class ResponseEntity extends BaseEntity { + + public ResponseEntity(Integer code, String message) { + this.code = code; + this.message = message; + } + + public ResponseEntity(Integer code, String message, Object returnData) { + this.code = code; + this.message = message; + this.returnData = returnData; + } + + public ResponseEntity() { + } + + /** + * 响应代码 + */ + private Integer code; + + /** + * 错误信息 + */ + private String message; + + /** + * 返回数据(非必须) + */ + private Object returnData; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Object getReturnData() { + return returnData; + } + + public void setReturnData(Object returnData) { + this.returnData = returnData; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/RowLocation.java b/wms_serve/src/main/java/com/wms/entity/app/RowLocation.java new file mode 100644 index 0000000..d90d50a --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/RowLocation.java @@ -0,0 +1,34 @@ +package com.wms.entity.app; + +import java.util.List; + +/** + * 排 + */ +public class RowLocation { + /** + * 当前排 + */ + private Integer row; + + /** + * 当前排的所有库位 + */ + private List currentLayerLocations; + + public Integer getRow() { + return row; + } + + public void setRow(Integer row) { + this.row = row; + } + + public List getCurrentLayerLocations() { + return currentLayerLocations; + } + + public void setCurrentLayerLocations(List currentLayerLocations) { + this.currentLayerLocations = currentLayerLocations; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/TaskInRequestEntity.java b/wms_serve/src/main/java/com/wms/entity/app/TaskInRequestEntity.java new file mode 100644 index 0000000..bd54e4a --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/TaskInRequestEntity.java @@ -0,0 +1,166 @@ +package com.wms.entity.app; + +import com.wms.entity.BaseEntity; + +import java.util.Date; + +/** + * WMS接收入库任务的接口实体类 + */ +public class TaskInRequestEntity extends BaseEntity { + /** + * 物料编号 + */ + private String goodsId; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 入库数量 + */ + private Integer goodsNum; + + /** + * 入库日期/生产日期 + */ + private Date productionDate; + + /** + * 托盘号 + */ + private String vehicleNo; + + /** + * 尺寸 + */ + private Integer vehicleSize; + + /** + * 重量 + */ + private Double weight; + + /** + * 起始位置 + */ + private String origin; + + /** + * 目标位置 + */ + private String destination; + + /** + * 入库库位类型:是否为虚拟库位 0:虚拟库位;1:真实库位 + */ + private String isVirtual; + + /** + * 是否空箱入库 0:空箱入库;1:带料入库 + */ + private String isEmpty; + + /** + * 用户 + */ + private String userName; + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getBatchNo() { + return batchNo; + } + + public void setBatchNo(String batchNo) { + this.batchNo = batchNo; + } + + public Integer getGoodsNum() { + return goodsNum; + } + + public void setGoodsNum(Integer goodsNum) { + this.goodsNum = goodsNum; + } + + public Date getProductionDate() { + return productionDate; + } + + public void setProductionDate(Date productionDate) { + this.productionDate = productionDate; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Double getWeight() { + return weight; + } + + public void setWeight(Double weight) { + this.weight = weight; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public Integer getVehicleSize() { + return vehicleSize; + } + + public void setVehicleSize(Integer vehicleSize) { + this.vehicleSize = vehicleSize; + } + + public String getIsVirtual() { + return isVirtual; + } + + public void setIsVirtual(String isVirtual) { + this.isVirtual = isVirtual; + } + + public String getIsEmpty() { + return isEmpty; + } + + public void setIsEmpty(String isEmpty) { + this.isEmpty = isEmpty; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/TaskOutRequestEntity.java b/wms_serve/src/main/java/com/wms/entity/app/TaskOutRequestEntity.java new file mode 100644 index 0000000..f505193 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/TaskOutRequestEntity.java @@ -0,0 +1,57 @@ +package com.wms.entity.app; + +import com.wms.entity.BaseEntity; + +/** + * 前台向后台发送出库请求实体类 + */ +public class TaskOutRequestEntity extends BaseEntity { + /** + * 物料编号 + */ + private String goodsId; + /** + * 需求数量 + */ + private Integer needNum; + /** + * 载具编号 + */ + private String vehicleNo; + /** + * 用户名称 + */ + private String userName; + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public Integer getNeedNum() { + return needNum; + } + + public void setNeedNum(Integer needNum) { + this.needNum = needNum; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/UserConfigEntity.java b/wms_serve/src/main/java/com/wms/entity/app/UserConfigEntity.java new file mode 100644 index 0000000..b09116c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/UserConfigEntity.java @@ -0,0 +1,34 @@ +package com.wms.entity.app; + +import com.wms.entity.table.User; +import com.wms.entity.BaseEntity; + +import java.util.List; + +public class UserConfigEntity extends BaseEntity { + /** + * 用户认证信息 + */ + private User user; + + /** + * 菜单及各种按钮信息 + */ + private List menuList; + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public List getMenuList() { + return menuList; + } + + public void setMenuList(List menuList) { + this.menuList = menuList; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/container/ContainerApiLocalResponse.java b/wms_serve/src/main/java/com/wms/entity/app/container/ContainerApiLocalResponse.java new file mode 100644 index 0000000..5ec7700 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/container/ContainerApiLocalResponse.java @@ -0,0 +1,42 @@ +package com.wms.entity.app.container; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * 给四向车服务的通用返回类 + */ +@Data +public class ContainerApiLocalResponse { + + public ContainerApiLocalResponse(String code, String message) { + this.code = code; + this.message = message; + } + + public ContainerApiLocalResponse(String code, String wmsTaskId, String message) { + this.code = code; + this.wmsTaskId = wmsTaskId; + this.message = message; + } + + /** + * 响应代码 + */ + @JsonProperty("code") + private String code; + + /** + * wms 任务号 + */ + @JsonProperty("wmstaskid") + private String wmsTaskId; + + /** + * 响应信息 + */ + @JsonProperty("message") + private String message; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/container/CreateInstoreTaskRequest.java b/wms_serve/src/main/java/com/wms/entity/app/container/CreateInstoreTaskRequest.java new file mode 100644 index 0000000..86194c7 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/container/CreateInstoreTaskRequest.java @@ -0,0 +1,56 @@ +package com.wms.entity.app.container; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +/** + * 四向车扫码入库的请求 + */ +@Data +public class CreateInstoreTaskRequest { + + /** + * 请求号 + */ + @NotBlank(message = "请求号不允许为空") + @JsonProperty("requestid") + private String requestId; + + /** + * 密钥 + */ + @NotBlank(message = "密钥不允许为空") + @JsonProperty("key") + private String key; + + /** + * 托盘号 + */ + @NotBlank(message = "托盘号不允许为空") + @JsonProperty("palletno") + private String palletNo; + + /** + * 长 + */ + @Pattern(regexp = "^\\d+$", message = "长不允许为空或者为非数字") + @JsonProperty("height") + private String height; + + /** + * 宽 + */ + @Pattern(regexp = "^\\d+$", message = "宽不允许为空或者为非数字") + @JsonProperty("weight") + private String weight; + + /** + * 起点位置 + */ + @NotBlank(message = "起点位置不允许为空") + @JsonProperty("fromcellno") + private String fromCellNo; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/container/CreateInstoreTaskResponse.java b/wms_serve/src/main/java/com/wms/entity/app/container/CreateInstoreTaskResponse.java new file mode 100644 index 0000000..2808b93 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/container/CreateInstoreTaskResponse.java @@ -0,0 +1,57 @@ +package com.wms.entity.app.container; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * 四向车扫码入库的接口的返回响应 + */ +@Data +public class CreateInstoreTaskResponse { + + public CreateInstoreTaskResponse(String code, String message) { + this.code = code; + this.message = message; + } + + public CreateInstoreTaskResponse() { + } + + /** + * 响应代码 + */ + @JsonProperty("code") + private String code; + + /** + * wms 任务号 + */ + @JsonProperty("wmstaskid") + private String wmsTaskId; + + /** + * 载具号 + */ + @JsonProperty("palletno") + private String palletNo; + + /** + * 起始位置 + */ + @JsonProperty("fromcellno") + private String fromCellNo; + + /** + * 目的位置 + */ + @JsonProperty("tocellno") + private String toCellNo; + + /** + * 信息 + */ + @JsonProperty("message") + private String message; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/container/SendContainerTaskRequest.java b/wms_serve/src/main/java/com/wms/entity/app/container/SendContainerTaskRequest.java new file mode 100644 index 0000000..bd1f11d --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/container/SendContainerTaskRequest.java @@ -0,0 +1,57 @@ +package com.wms.entity.app.container; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * 发送四向车任务的请求类 + */ +@Data +public class SendContainerTaskRequest { + + /** + * 请求号 + */ + @JsonProperty("requestid") + private String requestid; + + /** + * 秘钥 + */ + @JsonProperty("key") + private String key; + + /** + * wms任务号 + */ + @JsonProperty("wmstaskid") + private String wmstaskid; + + /** + * 容器号 + */ + @JsonProperty("palletno") + private String palletno; + + /** + * 源点 + */ + @JsonProperty("fromcellno") + private String fromcellno; + + /** + * 目的点 + */ + @JsonProperty("tocellno") + private String tocellno; + + /** + * 任务类型 + */ + @JsonProperty("tasktype") + private String tasktype; + + + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/container/TaskStateNoticeRequest.java b/wms_serve/src/main/java/com/wms/entity/app/container/TaskStateNoticeRequest.java new file mode 100644 index 0000000..8f5d818 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/container/TaskStateNoticeRequest.java @@ -0,0 +1,39 @@ +package com.wms.entity.app.container; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class TaskStateNoticeRequest { + + /** + * 请求ID + */ + @NotBlank + @JsonProperty("requestid") + private String requestId; + + /** + * 密钥 + */ + @NotBlank + @JsonProperty("key") + private String key; + + /** + * wms任务号 + */ + @NotBlank + @JsonProperty("wmstaskid") + private String wmsTaskId; + + /** + * 任务状态 + */ + @NotBlank + @JsonProperty("taskstate") + private String taskState; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/display/LocationData.java b/wms_serve/src/main/java/com/wms/entity/app/display/LocationData.java new file mode 100644 index 0000000..2c9f2b9 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/display/LocationData.java @@ -0,0 +1,55 @@ +package com.wms.entity.app.display; + +/** + * 大屏用数据详细类 + */ +public class LocationData { + /** + * 零件号 + */ + private String goodsId; + /** + * 零件名称 + */ + private String goodsName; + /** + * 数量 + */ + private Integer goodsNum; + /** + * 备注 + */ + private String remark; + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public Integer getGoodsNum() { + return goodsNum; + } + + public void setGoodsNum(Integer goodsNum) { + this.goodsNum = goodsNum; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/display/LocationInfo.java b/wms_serve/src/main/java/com/wms/entity/app/display/LocationInfo.java new file mode 100644 index 0000000..10eeee1 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/display/LocationInfo.java @@ -0,0 +1,45 @@ +package com.wms.entity.app.display; + +import java.util.List; + +/** + * 大屏用库位信息 + */ +public class LocationInfo { + /** + * 库位编号 + */ + private String locationId; + /** + * 料箱号 + */ + private String vehicleNo; + /** + * 详细数据 + */ + private List locationData; + + public String getLocationId() { + return locationId; + } + + public void setLocationId(String locationId) { + this.locationId = locationId; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public List getLocationData() { + return locationData; + } + + public void setLocationData(List locationData) { + this.locationData = locationData; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/CheckNoticeRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/CheckNoticeRequest.java new file mode 100644 index 0000000..bbe310e --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/CheckNoticeRequest.java @@ -0,0 +1,35 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * 盘点通知单请求类 + */ +@Data +public class CheckNoticeRequest { + + /** + * 唯一识别码 + */ + @JsonProperty("guid") + @NotBlank(message = "唯一识别码不允许为空或者空字符串") + private String guid; + + /** + * 盘点单号 + */ + @JsonProperty("InventoryNo") + @NotBlank(message = "盘点单号不允许为空或者空字符串") + private String inventoryNo; + + /** + * 盘点库别 + */ + @JsonProperty("IWarehouse") + @NotBlank(message = "盘点库别不允许为空或者空字符串") + private String iWarehouse; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/MesApiLocalResponse.java b/wms_serve/src/main/java/com/wms/entity/app/mes/MesApiLocalResponse.java new file mode 100644 index 0000000..7b3372e --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/MesApiLocalResponse.java @@ -0,0 +1,29 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * mes 接口的返回类,本地响应给 Mes 用的 + */ +@Data +public class MesApiLocalResponse { + + public MesApiLocalResponse(Integer transFlag, String errorMessage) { + this.transFlag = transFlag; + this.errorMessage = errorMessage; + } + + /** + * 响应编号:1 - 成功;0 - 失败 + */ + @JsonProperty("TransFlag") + private Integer transFlag; + + /** + * 返回的信息 + */ + @JsonProperty("ErrorMessage") + private String errorMessage; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java new file mode 100644 index 0000000..2052d5a --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/OutNoticeRequest.java @@ -0,0 +1,68 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +import java.util.List; + +/** + * Mes 出货通单请求信息 + */ +@Data +public class OutNoticeRequest { + + /** + * 唯一识别码 + */ + @NotBlank(message = "唯一识别码不允许为空或者空字符串") + @JsonProperty("guid") + private String guid; + + /** + * 出库通知单号 + */ + @NotBlank(message = "发货通知单不允许为空或者空字符串") + @JsonProperty("TransferNo") + private String transferNo; + + /** + * 源库别 + */ + @NotBlank(message = "源库别不允许为空或者空字符串") + @JsonProperty("FWarehouse") + private String fWarehouse; + + /** + * 目的库别 + */ + //@NotBlank(message = "目的库别不允许为空或者空字符串") + @JsonProperty("Twarehouse") + private String tWarehouse; + + /** + * 出库类型 + */ + @NotNull(message = "类型不允许为空") + @JsonProperty("Type") + private Integer type; + + + /** + * 计划交货日期 + */ + @NotBlank(message = "计划交货日不允许为空或者空字符串") + @JsonProperty("RDate") + private String rDate; + + /** + * 行信息 + */ + @NotEmpty(message = "行信息不允许为空") + @JsonProperty("Row") + private OutNoticeRequestRow[] row; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/OutNoticeRequestRow.java b/wms_serve/src/main/java/com/wms/entity/app/mes/OutNoticeRequestRow.java new file mode 100644 index 0000000..2f986e7 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/OutNoticeRequestRow.java @@ -0,0 +1,47 @@ +package com.wms.entity.app.mes; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +/** + * 发货通知单行信息 + */ +@Data +public class OutNoticeRequestRow { + + /** + * 行号 + */ + @Pattern(regexp = "^\\d+$", message = "行号必须为数字") + @JsonProperty("TransferLine") + private String transferLine; + + /** + * 料号 + */ + @NotBlank(message = "料号不允许为空或者空字符串") + @JsonProperty("ItemCode") + private String itemCode; + + /** + * 数量?????? + */ + //@Pattern(regexp = "^\\\\d*(\\\\.\\\\d+)?$", message = "数量必须为数字") + //@Pattern(regexp = "^\\d+$", message = "数量必须为数字") + @JsonProperty("Qty") + private String qty; +// @Pattern(regexp = ".*", message = "数量必须为字符串") +// @JsonProperty("Qty") +// private String qty; + + + /** + * 单位 + */ + @NotBlank(message = "单位不允许为空或者空字符串") + @JsonProperty("Unit") + private String unit; +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/ReceiptInRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/ReceiptInRequest.java new file mode 100644 index 0000000..14a4ca9 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/ReceiptInRequest.java @@ -0,0 +1,71 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +/** + * Mes 推送入库信息的实体 + */ +@Data +public class ReceiptInRequest { + + /** + * 唯一识别码 + */ + @JsonProperty("guid") + @NotBlank(message = "唯一识别码不允许为空或者空字符串") + private String guid; + + /** + * 入库类型 + * 1-原料入库 + * 2-半成品入库 + * 3-成品入库 + * 4-销售退货入库 + * 5-其他入库 + */ + @JsonProperty("Type") + @NotNull(message = "入库类型不允许为空") + private Integer type; + + /** + * 批次号 + */ + @JsonProperty("Losnr") + //@NotBlank(message = "批次号不允许为空") + public String losnr; + + /** + * 载具号 + */ + @JsonProperty("VehicleNo") + public String vehicleNo; + + /** + * 料号 + */ + @JsonProperty("ItemCode") + @NotBlank(message = "料号不允许为空") + public String itemCode; + + /** + * 数量 + */ + @JsonProperty("LotQty") + @NotNull(message = "数量不允许为空") + //@Pattern(regexp = "^\\d+$", message = "数量必须为数字") + //@Pattern(regexp = "^\\\\d*(\\\\.\\\\d+)?$", message = "数量必须为数字") + //@Pattern(regexp = "^\\d*(\\.\\d+)?$", message = "数量必须为有效的数字字符串") + public String lotQty; + + /** + * 库别 + */ + @JsonProperty("Warehouse") + @NotBlank(message = "库别不允许为空") + public String warehouse; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java new file mode 100644 index 0000000..cf32d22 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRequest.java @@ -0,0 +1,26 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * 发送mes 盘点执行 + */ +@Data +public class SendMesGoodsInventoryRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("InventoryNo") + private String inventoryNo; + + @JsonProperty("Row") + private List row; + + +} + + diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java new file mode 100644 index 0000000..2e90e21 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsInventoryRow.java @@ -0,0 +1,20 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + + +@Data +public class SendMesGoodsInventoryRow { + + @JsonProperty("Losnr") + private String losnr; + + @JsonProperty("LotQty") + private String lotQty; + + @JsonProperty("Warehouse") + private String warehouse; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java new file mode 100644 index 0000000..de048c8 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesGoodsMoveRequest.java @@ -0,0 +1,29 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * 发送mes移库完成 + */ +@Data +public class SendMesGoodsMoveRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("Losnr") + private String losnr; + + @JsonProperty("LotQty") + private String lotQty; + + @JsonProperty("FBinCOde") + private String fBinCode; + + @JsonProperty("TBinCode") + private String tBinCode; + + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutInGoodsRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutInGoodsRequest.java new file mode 100644 index 0000000..cce0bc2 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutInGoodsRequest.java @@ -0,0 +1,43 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * 入库发送 mes + */ +@Data +public class SendMesPutInGoodsRequest { + + /** + * 唯一号 + */ + @JsonProperty("guid") + private String guid; + + /** + * 批次号 + */ + @JsonProperty("Losnr") + private String losnr; + + /** + * 料号 + */ + @JsonProperty("ItemCode") + private String itemCode; + + /** + * 数量 + */ + @JsonProperty("LotQty") + private String lotQty; + + /** + * 库位 + */ + @JsonProperty("BinCode") + private String binCode; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java new file mode 100644 index 0000000..3e670b7 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRequest.java @@ -0,0 +1,27 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * 发送mes出库信息 + */ +@Data +public class SendMesPutOutGoodsRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("TransferNo") + private String transferNo; + + @JsonProperty("Type") + private int type; + + @JsonProperty("Row") + private List row; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java new file mode 100644 index 0000000..c304c9d --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesPutOutGoodsRow.java @@ -0,0 +1,31 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class SendMesPutOutGoodsRow { + + //行号 + @JsonProperty("TransferLine") + private String transferLine; + + //批次 + @JsonProperty("Losnr") + private String losnr; + + //数量 + @JsonProperty("LotQty") + private String lotQty; + + //箱号 + @JsonProperty("VehicleNo") + private String vehicleNo; + + //仓库 + @JsonProperty("Warehouse") + private String warehouse; + + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesStockRequest.java b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesStockRequest.java new file mode 100644 index 0000000..2d9397f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/mes/SendMesStockRequest.java @@ -0,0 +1,32 @@ +package com.wms.entity.app.mes; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class SendMesStockRequest { + + @JsonProperty("guid") + private String guid; + + @JsonProperty("Warehouse") + private String Warehouse; + + @JsonProperty("ItemCode") + private String ItemCode; + + @JsonProperty("Losnr") + private String Losnr; + + @JsonProperty("LotQty") + private String LotQty; + + @JsonProperty("Unit") + private String Unit; + + @JsonProperty("BinCode") + private String BinCode; + + @JsonProperty("VehicleNo") + private String VehicleNo; +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/DisposeStandRequest.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/DisposeStandRequest.java new file mode 100644 index 0000000..9de2ab6 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/DisposeStandRequest.java @@ -0,0 +1,40 @@ +package com.wms.entity.app.wcs; + +public class DisposeStandRequest { + /** + * 站台 + */ + private String pickStand; + /** + * 载具号 + */ + private String vehicleNo; + /** + * 状态 + */ + private Integer status; + + public String getPickStand() { + return pickStand; + } + + public void setPickStand(String pickStand) { + this.pickStand = pickStand; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/PickTaskRequest.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/PickTaskRequest.java new file mode 100644 index 0000000..036c48c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/PickTaskRequest.java @@ -0,0 +1,45 @@ +package com.wms.entity.app.wcs; + +import java.util.List; + +/** + * WCS上报箱子到达接口请求 + */ +public class PickTaskRequest { + /** + * 载具号 + */ + private String vehicleNo; + /** + * 拣选站台 + */ + private List pickStand; + /** + * 备注 + */ + private String remark; + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public List getPickStand() { + return pickStand; + } + + public void setPickStand(List pickStand) { + this.pickStand = pickStand; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/PickTaskResponse.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/PickTaskResponse.java new file mode 100644 index 0000000..6d1f449 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/PickTaskResponse.java @@ -0,0 +1,40 @@ +package com.wms.entity.app.wcs; + +public class PickTaskResponse { + /** + * 载具号 + */ + private String vehicleNo; + /** + * 拣选站台 + */ + private String pickStand; + /** + * 备注 + */ + private String remark; + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getPickStand() { + return pickStand; + } + + public void setPickStand(String pickStand) { + this.pickStand = pickStand; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/RequireInRequest.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/RequireInRequest.java new file mode 100644 index 0000000..37972a6 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/RequireInRequest.java @@ -0,0 +1,59 @@ +package com.wms.entity.app.wcs; + +import jakarta.validation.constraints.NotBlank; + +/** + * WCS请求载具入库 实体类 + */ +public class RequireInRequest { + /** + * 点位 + */ + @NotBlank(message = "请求的点位不能为空") + private String point; + /** + * 载具编号 + */ + @NotBlank(message = "请求的载具编号不能为空") + private String vehicleNo; + /** + * 条码信息 + */ + private String codeMessage; + /** + * 备注 + */ + private String remark; + + public String getPoint() { + return point; + } + + public void setPoint(String point) { + this.point = point; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getCodeMessage() { + return codeMessage; + } + + public void setCodeMessage(String codeMessage) { + this.codeMessage = codeMessage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsGoods.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsGoods.java new file mode 100644 index 0000000..227b094 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsGoods.java @@ -0,0 +1,83 @@ +package com.wms.entity.app.wcs; + +import com.wms.entity.BaseEntity; + +import java.math.BigDecimal; + +/** + * wcs需要的物料信息 + */ +public class WcsGoods extends BaseEntity { + /** + * 物品编号 + */ + private String goodsId; + /** + * 物品名称 + */ + private String goodsName; + /** + * 物品批次 + */ + private String batch; + /** + * 物品条码 + */ + private String goodsCode; + /** + * 物品单位 + */ + private String unit; + /** + * 物品数量 + */ + private BigDecimal goodsNum; + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public String getBatch() { + return batch; + } + + public void setBatch(String batch) { + this.batch = batch; + } + + public String getGoodsCode() { + return goodsCode; + } + + public void setGoodsCode(String goodsCode) { + this.goodsCode = goodsCode; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public BigDecimal getGoodsNum() { + return goodsNum; + } + + public void setGoodsNum(BigDecimal goodsNum) { + this.goodsNum = goodsNum; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsTask.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsTask.java new file mode 100644 index 0000000..f3d697f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsTask.java @@ -0,0 +1,152 @@ +package com.wms.entity.app.wcs; + +import com.wms.entity.BaseEntity; + +/** + * WMS向WCS发送任务请求的实体类 + */ +public class WcsTask extends BaseEntity { + + /** + * 任务编号 + */ + private String taskId; + + /** + * 任务类型 + */ + private Integer taskType; + + /** + * 优先级 + */ + private Integer priority; + + /** + * 任务状态 + */ + private Integer taskStatus; + + /** + * 起点 + */ + private String origin; + + /** + * 任务中间点 + */ + private String midPoint; + + /** + * 终点 + */ + private String destination; + + /** + * 载具编号 + */ + private String vehicleNo; + + /** + * 载具尺寸 + */ + private Integer vehicleSize; + + /** + * 重量 + */ + private Double weight; + + /** + * 信息---一般填异常信息 + */ + private String message; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getTaskType() { + return taskType; + } + + public void setTaskType(Integer taskType) { + this.taskType = taskType; + } + + public Integer getPriority() { + return priority; + } + + public void setPriority(Integer priority) { + this.priority = priority; + } + + public Integer getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(Integer taskStatus) { + this.taskStatus = taskStatus; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getMidPoint() { + return midPoint; + } + + public void setMidPoint(String midPoint) { + this.midPoint = midPoint; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getVehicleSize() { + return vehicleSize; + } + + public void setVehicleSize(Integer vehicleSize) { + this.vehicleSize = vehicleSize; + } + + public Double getWeight() { + return weight; + } + + public void setWeight(Double weight) { + this.weight = weight; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsToWmsInspectVesselEntity.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsToWmsInspectVesselEntity.java new file mode 100644 index 0000000..dea894b --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/WcsToWmsInspectVesselEntity.java @@ -0,0 +1,102 @@ +package com.wms.entity.app.wcs; + +import com.wms.entity.BaseEntity; + +import java.math.BigDecimal; + +/** + * WCS向WMS发送容器信息的实体类 + */ +public class WcsToWmsInspectVesselEntity extends BaseEntity { + + /** + * 请求时间 + */ + private String requestTime; + + /** + * 任务类型 + */ + private Integer taskType; + + /** + * 载具编号 + */ + private String vehicleNo; + + /** + * 设备编号 + */ + private Integer equipmentId; + + /** + * 地点 + */ + private String place; + + /** + * 尺寸 + */ + private Integer size; + + /** + * 重量 + */ + private BigDecimal weight; + + public String getRequestTime() { + return requestTime; + } + + public void setRequestTime(String requestTime) { + this.requestTime = requestTime; + } + + public Integer getTaskType() { + return taskType; + } + + public void setTaskType(Integer taskType) { + this.taskType = taskType; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getPlace() { + return place; + } + + public void setPlace(String place) { + this.place = place; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } + + public Integer getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(Integer equipmentId) { + this.equipmentId = equipmentId; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/app/wcs/WmsReceiveTaskResultEntity.java b/wms_serve/src/main/java/com/wms/entity/app/wcs/WmsReceiveTaskResultEntity.java new file mode 100644 index 0000000..96d0332 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/app/wcs/WmsReceiveTaskResultEntity.java @@ -0,0 +1,74 @@ +package com.wms.entity.app.wcs; + +import com.wms.entity.BaseEntity; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * WCS向WMS发送任务结果请求实体类 + */ +public class WmsReceiveTaskResultEntity extends BaseEntity { + + /** + * WMS任务编号 + */ + @NotBlank(message = "任务ID不允许为空") + private String taskId; + /** + * 任务状态 + */ + @NotNull(message = "任务状态不允许为空") + private Integer taskStatus; + /** + * 任务终点 + */ + private String destination; + /** + * 载具号/箱号 + */ + private String vehicleNo; + /** + * 任务信息 + */ + private String message; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(Integer taskStatus) { + this.taskStatus = taskStatus; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/common/WmsApiResponse.java b/wms_serve/src/main/java/com/wms/entity/common/WmsApiResponse.java new file mode 100644 index 0000000..abb5ab7 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/common/WmsApiResponse.java @@ -0,0 +1,30 @@ +package com.wms.entity.common; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class WmsApiResponse { + + /** + * 返回代码 + */ + @JsonProperty(value = "code") + private Integer code; + + /** + * 返回消息 + */ + @JsonProperty(value = "message") + private String message; + + /** + * 返回信息 + */ + @JsonProperty(value = "returnData") + private T returnData; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderCheck/queryOrderCheckRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderCheck/queryOrderCheckRequest.java new file mode 100644 index 0000000..722d27f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderCheck/queryOrderCheckRequest.java @@ -0,0 +1,21 @@ +package com.wms.entity.dto.orderCheck; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class queryOrderCheckRequest { + /** + * 查询参数 + */ + @JsonProperty(value = "searchStr") + private String searchStr; + + /** + * 状态 + */ + @JsonProperty(value = "orderStatus") + public List orderStatus; +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderCheck/remarkOrderCheckRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderCheck/remarkOrderCheckRequest.java new file mode 100644 index 0000000..a605975 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderCheck/remarkOrderCheckRequest.java @@ -0,0 +1,12 @@ +package com.wms.entity.dto.orderCheck; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class remarkOrderCheckRequest { + + @JsonProperty(value = "remarkReturn") + private String remarkReturn; +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderIn/bindingVehicleRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/bindingVehicleRequest.java new file mode 100644 index 0000000..062a0ce --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/bindingVehicleRequest.java @@ -0,0 +1,21 @@ +package com.wms.entity.dto.orderIn; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class bindingVehicleRequest { + + /** + * 载具号 + */ + @JsonProperty(value = "vehicleNo") + private String vehicleNo; + + /** + * 条码 + */ + @JsonProperty(value = "code") + private String code; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderIn/downOrderInRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/downOrderInRequest.java new file mode 100644 index 0000000..0e49553 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/downOrderInRequest.java @@ -0,0 +1,39 @@ +package com.wms.entity.dto.orderIn; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +@Data +public class downOrderInRequest { + + /** + * 零件号 + */ + @JsonProperty(value = "goodsId") + public String goodsId; + + /** + * 数量 + */ + @JsonProperty(value = "goodsNum") + public int goodsNum; + + + /** + * 载具号 + */ + @JsonProperty(value = "vehicleNo") + public String vehicleNo; + + /** + * 仓库区域 + */ + @JsonProperty(value = "abcSelect") + public String abcSelect; + + + /** + * 入库种类,e为单,f为多种 + */ + @JsonProperty(value = "efSelect") + public String efSelect; +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderIn/queryOrderInRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/queryOrderInRequest.java new file mode 100644 index 0000000..64ab8d5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/queryOrderInRequest.java @@ -0,0 +1,25 @@ +package com.wms.entity.dto.orderIn; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class queryOrderInRequest { + + /** + * 查询参数 + */ + @JsonProperty(value = "searchStr") + private String searchStr; + + /** + * 状态 + */ + @JsonProperty(value = "orderStatus") + public List orderStatus; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderIn/updateNumRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/updateNumRequest.java new file mode 100644 index 0000000..34b5ac5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderIn/updateNumRequest.java @@ -0,0 +1,18 @@ +package com.wms.entity.dto.orderIn; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class updateNumRequest { + + @JsonProperty(value = "rowId") + private String rowId; + + @JsonProperty(value = "realNum") + private BigDecimal realNum; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderOut/handOrderOutRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderOut/handOrderOutRequest.java new file mode 100644 index 0000000..538eeb2 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderOut/handOrderOutRequest.java @@ -0,0 +1,36 @@ +package com.wms.entity.dto.orderOut; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +public class handOrderOutRequest { + + + /** + * 查询参数 + */ + @JsonProperty(value = "goodsId") + public String goodsId; + + /** + * 状态 + */ + @JsonProperty(value = "goodsNum") + public int goodsNum; + + + /** + * 载具号 + */ + @JsonProperty(value = "vehicleNo") + public String vehicleNo; + + + /** + * 库位 + */ + @JsonProperty(value = "location") + public String location; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/dto/orderOut/queryOrderOutRequest.java b/wms_serve/src/main/java/com/wms/entity/dto/orderOut/queryOrderOutRequest.java new file mode 100644 index 0000000..d0fd764 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/dto/orderOut/queryOrderOutRequest.java @@ -0,0 +1,23 @@ +package com.wms.entity.dto.orderOut; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class queryOrderOutRequest { + + /** + * 查询参数 + */ + @JsonProperty(value = "searchStr") + private String searchStr; + + /** + * 状态 + */ + @JsonProperty(value = "orderStatus") + public List orderStatus; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/page/PageDomain.java b/wms_serve/src/main/java/com/wms/entity/page/PageDomain.java new file mode 100644 index 0000000..dc6e300 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/page/PageDomain.java @@ -0,0 +1,67 @@ +package com.wms.entity.page; + +import com.wms.utils.StringUtils; + +/** + * 分页请求 + * 前端表格用 + */ +public class PageDomain { + /** + * 当前记录起始索引 + */ + private Integer pageNum; + /** + * 每页显示记录数 + */ + private Integer pageSize; + /** + *排序列 + */ + private String orderByColumn; + /** + * 排序方向 + */ + private String isAsc = "asc"; + + public String getOrderBy() + { + if (StringUtils.isEmpty(orderByColumn)) + { + return ""; + } + return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; + } + + public Integer getPageNum() { + return pageNum; + } + + public void setPageNum(Integer pageNum) { + this.pageNum = pageNum; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + public String getOrderByColumn() { + return orderByColumn; + } + + public void setOrderByColumn(String orderByColumn) { + this.orderByColumn = orderByColumn; + } + + public String getIsAsc() { + return isAsc; + } + + public void setIsAsc(String isAsc) { + this.isAsc = isAsc; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/page/TableRequest.java b/wms_serve/src/main/java/com/wms/entity/page/TableRequest.java new file mode 100644 index 0000000..a29b835 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/page/TableRequest.java @@ -0,0 +1,43 @@ +package com.wms.entity.page; + +/** + * 前端请求表格数据 + */ +public class TableRequest { + /** + * 分页请求数据 + */ + private PageDomain page; + /** + * 参数 + */ + private T param; + /** + * 参数2 + */ + private T2 param2; + + public PageDomain getPage() { + return page; + } + + public void setPage(PageDomain page) { + this.page = page; + } + + public T getParam() { + return param; + } + + public void setParam(T param) { + this.param = param; + } + + public T2 getParam2() { + return param2; + } + + public void setParam2(T2 param2) { + this.param2 = param2; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/page/TableResponse.java b/wms_serve/src/main/java/com/wms/entity/page/TableResponse.java new file mode 100644 index 0000000..4ea4218 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/page/TableResponse.java @@ -0,0 +1,57 @@ +package com.wms.entity.page; + +import java.util.List; + +/** + * 前端表格请求的返回值 + */ +public class TableResponse { + /** + * 总记录数 + */ + private long total; + /** + * 列表数据 + */ + private List rows; + /** + * 状态码 + */ + private int code; + /** + * 消息 + */ + private String message; + + public long getTotal() { + return total; + } + + public void setTotal(long total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/AppOrderIn.java b/wms_serve/src/main/java/com/wms/entity/table/AppOrderIn.java new file mode 100644 index 0000000..f12ff3f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/AppOrderIn.java @@ -0,0 +1,128 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.wms.utils.excel.ExcelExport; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.poi.hpsf.Decimal; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * tbl_app_order_in 的实体类 + */ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class AppOrderIn { + + public AppOrderIn(String guid) { + this.guid = guid; + } + + + public AppOrderIn(String betchId, BigDecimal goodsNum, Integer orderStatus) { + this.batchNo = betchId; + this.goodsNum = goodsNum; + this.orderStatus = orderStatus; + } + + /** + * 主键 + */ + @JsonProperty(value = "rowId") + private String rowId; + + /** + * 唯一标识 + */ + @JsonProperty(value = "guid") + private String guid; + + /** + * 订单类型 + */ + @JsonProperty(value = "inType") + private Integer inType; + + /** + * 批次号 + */ + @JsonProperty(value = "batchNo") + private String batchNo; + + /** + * 载具号 + */ + @JsonProperty(value = "vehicleNo") + private String vehicleNo; + + /** + * 商品id + */ + @JsonProperty(value = "goodsId") + private String goodsId; + + /** + * 商品数量 + */ + @JsonProperty(value = "goodsNum") + private BigDecimal goodsNum; + + /** + * 仓库 + */ + @JsonProperty(value = "wareHouse") + private String wareHouse; + + /** + * 订单状态 + */ + @JsonProperty(value = "orderStatus") + private Integer orderStatus; + + /** + * 创建时间 + */ + @JsonProperty(value = "createTime") + private LocalDateTime createTime; + + +// /** +// * 生产日期 +// */ + @JsonProperty(value = "productionDate") + private String productionDate; + +// @ExcelExport("生产日期") +// @DateTimeFormat(pattern = "yyyy-MM-dd") +// @JsonFormat(pattern = "yyyy-MM-dd") +// private Date productionDate; + + + /** + * 创建人 + */ + @JsonProperty(value = "createPerson") + private String createPerson; + + /** + * 修改时间 + */ + @JsonProperty(value = "updateTime") + private LocalDateTime updateTime; + + /** + * 备注 + */ + @JsonProperty(value = "remark") + private String remark; + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Config.java b/wms_serve/src/main/java/com/wms/entity/table/Config.java new file mode 100644 index 0000000..b0d5979 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Config.java @@ -0,0 +1,73 @@ +package com.wms.entity.table; + +import com.wms.entity.BaseEntity; + +/** + * 配置 + */ +public class Config extends BaseEntity { + /** + * 配置ID + */ + private Integer configId; + + /** + * 配置键 + */ + private String configKey; + + /** + * 配置值 + */ + private String configValue; + + /** + * 配置展示类型 + */ + private String configType; + + /** + * 配置名称 + */ + private String configName; + + public Integer getConfigId() { + return configId; + } + + public void setConfigId(Integer configId) { + this.configId = configId; + } + + public String getConfigKey() { + return configKey; + } + + public void setConfigKey(String configKey) { + this.configKey = configKey; + } + + public String getConfigValue() { + return configValue; + } + + public void setConfigValue(String configValue) { + this.configValue = configValue; + } + + public String getConfigType() { + return configType; + } + + public void setConfigType(String configType) { + this.configType = configType; + } + + public String getConfigName() { + return configName; + } + + public void setConfigName(String configName) { + this.configName = configName; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Goods.java b/wms_serve/src/main/java/com/wms/entity/table/Goods.java new file mode 100644 index 0000000..4be40f5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Goods.java @@ -0,0 +1,149 @@ +package com.wms.entity.table; + +import com.wms.entity.BaseEntity; + +import java.util.Date; + +/** + * 物料 + */ +public class Goods extends BaseEntity { + + /** + * 物料编号 + */ + private String goodsId; + + /** + * 物料名称 + */ + private String goodsName; + + /** + * 单位 + */ + private String goodsUnit; + + /** + * 物料ID + */ + private String itemId; + /** + * 用户物料类型 + */ + private String itemType; + /** + * 库存类别 + */ + private String invCategory; + /** + * 存储天数 + */ + private Integer lifeDays; + /** + * 库存组织Id + */ + private String organizationId; + /** + * 库存组织代码 + */ + private String organizationCode; + + /** + * 最后更新日期 + */ + private Date lastUpdateTime; + + /** + * 最后更新用户 + */ + private String lastUpdateUser; + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public String getGoodsUnit() { + return goodsUnit; + } + + public void setGoodsUnit(String goodsUnit) { + this.goodsUnit = goodsUnit; + } + + public String getItemId() { + return itemId; + } + + public void setItemId(String itemId) { + this.itemId = itemId; + } + + public String getItemType() { + return itemType; + } + + public void setItemType(String itemType) { + this.itemType = itemType; + } + + public String getInvCategory() { + return invCategory; + } + + public void setInvCategory(String invCategory) { + this.invCategory = invCategory; + } + + public Integer getLifeDays() { + return lifeDays; + } + + public void setLifeDays(Integer lifeDays) { + this.lifeDays = lifeDays; + } + + public String getOrganizationId() { + return organizationId; + } + + public void setOrganizationId(String organizationId) { + this.organizationId = organizationId; + } + + public String getOrganizationCode() { + return organizationCode; + } + + public void setOrganizationCode(String organizationCode) { + this.organizationCode = organizationCode; + } + + public Date getLastUpdateTime() { + return lastUpdateTime; + } + + public void setLastUpdateTime(Date lastUpdateTime) { + this.lastUpdateTime = lastUpdateTime; + } + + public String getLastUpdateUser() { + return lastUpdateUser; + } + + public void setLastUpdateUser(String lastUpdateUser) { + this.lastUpdateUser = lastUpdateUser; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Location.java b/wms_serve/src/main/java/com/wms/entity/table/Location.java new file mode 100644 index 0000000..0a92c57 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Location.java @@ -0,0 +1,185 @@ +package com.wms.entity.table; + +import com.wms.entity.BaseEntity; + +/** + * 库位 + */ +public class Location extends BaseEntity { + + /** + * 库位编号 + */ + private String locationId; + + private String wareArea; + + public String getWareArea() { + return wareArea; + } + + public void setWareArea(String wareArea) { + this.wareArea = wareArea; + } + + /** + * 库区编号 + */ + private Integer areaId; + + /** + * 巷道编号 + */ + private Integer tunnelId; + + /** + * 设备编号 + */ + private Integer equipmentId; + + /** + * 库位类型 + */ + private Integer locationType; + + /** + * 行 + */ + private Integer queue; + + /** + * 列 + */ + private Integer line; + + /** + * 层 + */ + private Integer layer; + + /** + * 深度 + */ + private Integer depth; + + /** + * 是否锁定 + */ + private Integer isLock; + + /** + * 库位状态 + */ + private Integer locationStatus; + + /** + * 载具编号 + */ + private String vehicleId; + + public Location() { + } + + public Location(String locationId) { + this.locationId = locationId; + } + public Location(Integer equipmentId) { + this.equipmentId = equipmentId; + } + + public String getLocationId() { + return locationId; + } + + public void setLocationId(String locationId) { + this.locationId = locationId; + } + + public Integer getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(Integer equipmentId) { + this.equipmentId = equipmentId; + } + + public Integer getAreaId() { + return areaId; + } + + public void setAreaId(Integer areaId) { + this.areaId = areaId; + } + + public Integer getQueue() { + return queue; + } + + public void setQueue(Integer queue) { + this.queue = queue; + } + + public Integer getLine() { + return line; + } + + public void setLine(Integer line) { + this.line = line; + } + + public Integer getLayer() { + return layer; + } + + public void setLayer(Integer layer) { + this.layer = layer; + } + + public Integer getDepth() { + return depth; + } + + public void setDepth(Integer depth) { + this.depth = depth; + } + + public Integer getIsLock() { + return isLock; + } + + public void setIsLock(Integer isLock) { + this.isLock = isLock; + } + + public Integer getLocationStatus() { + return locationStatus; + } + + public void setLocationStatus(Integer locationStatus) { + this.locationStatus = locationStatus; + } + + public String getVehicleId() { + return vehicleId; + } + + public void setVehicleId(String vehicleId) { + this.vehicleId = vehicleId; + } + + public Integer getTunnelId() { + return tunnelId; + } + + public void setTunnelId(Integer tunnelId) { + this.tunnelId = tunnelId; + } + + public Integer getLocationType() { + return locationType; + } + + public void setLocationType(Integer locationType) { + this.locationType = locationType; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Menu.java b/wms_serve/src/main/java/com/wms/entity/table/Menu.java new file mode 100644 index 0000000..641e220 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Menu.java @@ -0,0 +1,73 @@ +package com.wms.entity.table; + +import com.wms.entity.BaseEntity; + +/** + * 菜单 + */ +public class Menu extends BaseEntity { + /** + * 菜单Id + */ + private String menuId; + + /** + * 菜单名称 + */ + private String labelName; + + /** + * 图标值 + */ + private String iconValue; + + /** + * 地址 + */ + private String path; + + /** + * 父菜单Id + */ + private String parentId; + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getLabelName() { + return labelName; + } + + public void setLabelName(String labelName) { + this.labelName = labelName; + } + + public String getIconValue() { + return iconValue; + } + + public void setIconValue(String iconValue) { + this.iconValue = iconValue; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/OrderCheck.java b/wms_serve/src/main/java/com/wms/entity/table/OrderCheck.java new file mode 100644 index 0000000..589fd7c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/OrderCheck.java @@ -0,0 +1,59 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 盘点通知单表格 + * tbl_app_order_check + */ +@Data +public class OrderCheck { + + /** + * 记录号,唯一识别号 + */ + @JsonProperty(value = "recordId") + private String recordId; + + /** + * 盘点通知单号 + */ + @JsonProperty(value = "checkId") + private String checkId; + + /** + * 库别 + */ + @JsonProperty(value = "warehouse") + private String warehouse; + + /** + * 状态 + */ + @JsonProperty(value = "status") + private Integer status; + + /** + * 创建时间 + */ + @JsonProperty(value = "createTime") + private Date createTime; + + /** + * 完成时间 + */ + @JsonProperty(value = "completeTime") + private Date completeTime; + + /** + * 备注 + */ + @JsonProperty(value = "remark") + private String remark; + + + +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/OrderOut.java b/wms_serve/src/main/java/com/wms/entity/table/OrderOut.java new file mode 100644 index 0000000..9ff8969 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/OrderOut.java @@ -0,0 +1,126 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 出库单 + * tbl_app_order_out + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class OrderOut { + + public OrderOut(String rowId) { + this.rowId = rowId; + } + + + + /** + * 主键 + */ + @JsonProperty(value = "rowId") + private String rowId; + + /** + * 记录号 + */ + @JsonProperty(value = "recordId") + private String recordId; + + /** + * 出库通知单号 + */ + @JsonProperty(value = "orderId") + private String orderId; + + /** + * 起始库区 + */ + @JsonProperty(value = "warehouseOrigin") + private String warehouseOrigin; + + /** + * 目的库区 + */ + @JsonProperty(value = "warehouseDestination") + private String warehouseDestination; + + /** + * 出库单类型 + * 1:生产领料通知单 + * 2:调拨出库单 + * 3:出货通知单 + */ + @JsonProperty(value = "orderType") + private Integer orderType; + + /** + * 交货时间 + */ + @JsonProperty(value = "deliveryTime") + private Date deliveryTime; + + /** + * 行号 + */ + @JsonProperty(value = "rowNo") + private Integer rowNo; + + /** + * 物料编号 + */ + @JsonProperty(value = "goodsId") + private String goodsId; + + /** + * 物料名称 + */ + @JsonProperty(value = "goodsName") + private String goodsName; + + /** + * 物料数量 + */ + @JsonProperty(value = "goodsNum") + private String goodsNum; + + /** + * 单位 + */ + @JsonProperty(value = "unit") + private String unit; + + /** + * 状态 + */ + @JsonProperty(value = "status") + private Integer status; + + /** + * 创建时间 + */ + @JsonProperty(value = "createTime") + private Date createTime; + + + /** + * 备注 + */ + @JsonProperty(value = "remark") + private String remark; + + + /** + * 批次号 + */ + @JsonProperty(value = "batchNo") + private String batchNo; + +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/PartInfo.java b/wms_serve/src/main/java/com/wms/entity/table/PartInfo.java new file mode 100644 index 0000000..cbc1c17 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/PartInfo.java @@ -0,0 +1,212 @@ +package com.wms.entity.table; + +import com.wms.utils.excel.ExcelExport; +import com.wms.utils.excel.ExcelImport; + +/** + * 零件数据 + */ +public class PartInfo { + @ExcelImport("Material") + @ExcelExport("零件号") + private String material; + @ExcelImport("Desc") + @ExcelExport("描述") + private String itemDesc; + @ExcelImport("Category") + @ExcelExport("零件类型") + private String category; + @ExcelImport("CategoryRemark") + @ExcelExport("策略") + private String categoryRemark; + @ExcelImport("Unload Place") + @ExcelExport("卸货点") + private String unloadPlace; + @ExcelImport("Kitting Point") + @ExcelExport("配料点") + private String kittingPoint; + @ExcelImport("Property") + @ExcelExport("可用性") + private String property; + @ExcelImport("Vendor ID") + @ExcelExport("供应商代码") + private String vendorId; + @ExcelImport("Data Owner") + @ExcelExport("数据负责人") + private String dataOwner; + @ExcelImport("Part Weight") + @ExcelExport("重量") + private Double partWeight; + @ExcelImport("Storage Location") + @ExcelExport("库位") + private String storageLocation; + @ExcelImport("Storage Type") + @ExcelExport("存储类型") + private String storageType; + @ExcelImport("Storage Bin") + @ExcelExport("BIN位") + private String storageBin; + @ExcelImport("Vendor Name") + @ExcelExport("供应商名称(英文)") + private String vendorNameEN; + + @ExcelImport("供应商") + @ExcelExport("供应商名称(中文)") + private String vendorNameCN; + + @ExcelImport("Vendor Country") + @ExcelExport("供应商国家/地区") + private String vendorCountry; + + @ExcelImport("SLED") + @ExcelExport("SLED") + private String SLED; + + @ExcelImport("UpdateDate") + @ExcelExport("更新时间") + private String updateDate; + + public String getMaterial() { + return material; + } + + public void setMaterial(String material) { + this.material = material; + } + + public String getItemDesc() { + return itemDesc; + } + + public void setItemDesc(String itemDesc) { + this.itemDesc = itemDesc; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getCategoryRemark() { + return categoryRemark; + } + + public void setCategoryRemark(String categoryRemark) { + this.categoryRemark = categoryRemark; + } + + public String getUnloadPlace() { + return unloadPlace; + } + + public void setUnloadPlace(String unloadPlace) { + this.unloadPlace = unloadPlace; + } + + public String getKittingPoint() { + return kittingPoint; + } + + public void setKittingPoint(String kittingPoint) { + this.kittingPoint = kittingPoint; + } + + public String getProperty() { + return property; + } + + public void setProperty(String property) { + this.property = property; + } + + public String getVendorId() { + return vendorId; + } + + public void setVendorId(String vendorId) { + this.vendorId = vendorId; + } + + public String getDataOwner() { + return dataOwner; + } + + public void setDataOwner(String dataOwner) { + this.dataOwner = dataOwner; + } + + public Double getPartWeight() { + return partWeight; + } + + public void setPartWeight(Double partWeight) { + this.partWeight = partWeight; + } + + public String getStorageLocation() { + return storageLocation; + } + + public void setStorageLocation(String storageLocation) { + this.storageLocation = storageLocation; + } + + public String getStorageType() { + return storageType; + } + + public void setStorageType(String storageType) { + this.storageType = storageType; + } + + public String getStorageBin() { + return storageBin; + } + + public void setStorageBin(String storageBin) { + this.storageBin = storageBin; + } + + public String getVendorNameEN() { + return vendorNameEN; + } + + public void setVendorNameEN(String vendorNameEN) { + this.vendorNameEN = vendorNameEN; + } + + public String getVendorCountry() { + return vendorCountry; + } + + public void setVendorCountry(String vendorCountry) { + this.vendorCountry = vendorCountry; + } + + public String getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(String updateDate) { + this.updateDate = updateDate; + } + + public String getSLED() { + return SLED; + } + + public void setSLED(String SLED) { + this.SLED = SLED; + } + + public String getVendorNameCN() { + return vendorNameCN; + } + + public void setVendorNameCN(String vendorNameCN) { + this.vendorNameCN = vendorNameCN; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Stand.java b/wms_serve/src/main/java/com/wms/entity/table/Stand.java new file mode 100644 index 0000000..35fe5f6 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Stand.java @@ -0,0 +1,151 @@ +package com.wms.entity.table; + +import com.wms.entity.BaseEntity; + +/** + * 站台表 + */ +public class Stand extends BaseEntity { + /** + * 站台id + */ + private String standId; + /** + * 是否允许入库 + */ + private Integer allowIn; + /** + * 是否允许出库 + */ + private Integer allowOut; + /** + * 任务号 + */ + private String taskId; + /** + * 站台是否锁定 + */ + private Integer isLock; + /** + * 站台状态 + */ + private Integer standStatus; + + /** + * 设备编号 + */ + private Integer equipmentId; + + /** + * 库区编号 + */ + private Integer areaId; + /** + * 站台类型 + */ + private Integer standType; + /** + * 站台ip + */ + private String standIp; + + public Stand() { + + } + public Stand(Integer standType, String standIp, Integer standStatus) { + this.standType = standType; + this.standIp = standIp; + this.standStatus = standStatus; + } + public Stand(String standId, Integer allowIn, Integer allowOut, String taskId, Integer isLock, Integer standStatus, Integer equipmentId, Integer areaId, Integer standType) { + this.standId = standId; + this.allowIn = allowIn; + this.allowOut = allowOut; + this.taskId = taskId; + this.isLock = isLock; + this.standStatus = standStatus; + this.equipmentId = equipmentId; + this.areaId = areaId; + this.standType = standType; + } + + public String getStandId() { + return standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public Integer getAllowIn() { + return allowIn; + } + + public void setAllowIn(Integer allowIn) { + this.allowIn = allowIn; + } + + public Integer getAllowOut() { + return allowOut; + } + + public void setAllowOut(Integer allowOut) { + this.allowOut = allowOut; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getIsLock() { + return isLock; + } + + public void setIsLock(Integer isLock) { + this.isLock = isLock; + } + + public Integer getStandStatus() { + return standStatus; + } + + public void setStandStatus(Integer standStatus) { + this.standStatus = standStatus; + } + + public Integer getEquipmentId() { + return equipmentId; + } + + public void setEquipmentId(Integer equipmentId) { + this.equipmentId = equipmentId; + } + + public Integer getAreaId() { + return areaId; + } + + public void setAreaId(Integer areaId) { + this.areaId = areaId; + } + + public Integer getStandType() { + return standType; + } + + public void setStandType(Integer standType) { + this.standType = standType; + } + + public String getStandIp() { + return standIp; + } + + public void setStandIp(String standIp) { + this.standIp = standIp; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Stock.java b/wms_serve/src/main/java/com/wms/entity/table/Stock.java new file mode 100644 index 0000000..c46c656 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Stock.java @@ -0,0 +1,354 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.wms.entity.BaseEntity; +import com.wms.utils.excel.ExcelExport; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 库存 + */ +public class Stock extends BaseEntity { + + /** + * 库存编号 + */ + @ExcelExport("库存编号") + private String stockId; + + /** + * 库区编号 + */ + @ExcelExport("库区编号") + private String warehouseName; + + + + /** + * 库位ID + */ + @ExcelExport("库位") + private String locationId; + + /** + * 托盘号 + */ + @ExcelExport("箱号") + private String vehicleId; + + /** + * 物料编号 + */ + @ExcelExport("零件号") + private String goodsId; + + /** + * 物料名称 + */ + @ExcelExport("零件名称") + private String goodsName; + + /** + * 批次号 + */ + @ExcelExport("批次号") + private String batchNo; + + /** + * 可用数量 + */ + @ExcelExport("可用数量") + private Integer availableNum; + + /** + * 剩余数量 + */ + @ExcelExport("剩余数量") + private Integer remainNum; + + /** + * 实际数量 + */ + @ExcelExport("实际数量") + private Integer realNum; + + /** + * 供应商编号 + */ + @ExcelExport("供应商编号") + private String providerId; + /** + * 供应商名称 + */ + @ExcelExport("供应商名称") + private String providerName; + /** + * 生产日期 + */ + @ExcelExport("生产日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date productionDate; + /** + * 过期日期 + */ + @ExcelExport("过期日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date expirationDate; + /** + * 库存状态 + * 正常、出库中、锁定 等 + */ + @ExcelExport("库存状态") + private Integer stockStatus; + /** + * 物料状态 + * 合格、不合格、报废、延期 等 + */ + @ExcelExport("零件状态") + private Integer goodsStatus; + /** + * 创建时间 + */ + @ExcelExport("入库时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** + * 最后更新时间 + */ + @ExcelExport("最后更新时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastUpdateTime; + /** + * 最后更新用户 + */ + @ExcelExport("上架人") + private String lastUpdateUser; + /** + * 备注 + */ + @ExcelExport("备注") + private String remark; + /** + * 是否盘点 + */ + @ExcelExport("是否盘点") + private Integer isInventory; + /** + * 盘点任务号 盘点出库和盘点入库同样 + */ + @ExcelExport("盘点任务号") + private String inventoryTaskId; + /** + * 当前位置 + */ + @ExcelExport("当前位置") + private String currentLocation; + + /** + * 保质期 + */ + @ExcelExport("保质期") + private Double shelfLife; + + public Stock() { + + } + + public Stock(String vehicleId) { + this.vehicleId = vehicleId; + } + + public String getStockId() { + return stockId; + } + + public String getWarehouseName() { return warehouseName; } + + public void setWarehouseName(String warehouseName) { this.warehouseName = warehouseName; } + + public void setStockId(String stockId) { + this.stockId = stockId; + } + + public String getLocationId() { + return locationId; + } + + public void setLocationId(String locationId) { + this.locationId = locationId; + } + + public String getVehicleId() { + return vehicleId; + } + + public void setVehicleId(String vehicleId) { + this.vehicleId = vehicleId; + } + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public String getBatchNo() { + return batchNo; + } + + public void setBatchNo(String batchNo) { + this.batchNo = batchNo; + } + + public Integer getRemainNum() { + return remainNum; + } + + public void setRemainNum(Integer remainNum) { + this.remainNum = remainNum; + } + + public Integer getAvailableNum() { + return availableNum; + } + + public void setAvailableNum(Integer availableNum) { + this.availableNum = availableNum; + } + + public Integer getRealNum() { + return realNum; + } + + public void setRealNum(Integer realNum) { + this.realNum = realNum; + } + + public String getProviderId() { + return providerId; + } + + public void setProviderId(String providerId) { + this.providerId = providerId; + } + + public String getProviderName() { + return providerName; + } + + public void setProviderName(String providerName) { + this.providerName = providerName; + } + + public Date getProductionDate() { + return productionDate; + } + + public void setProductionDate(Date productionDate) { + this.productionDate = productionDate; + } + + public Date getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(Date expirationDate) { + this.expirationDate = expirationDate; + } + + public Integer getStockStatus() { + return stockStatus; + } + + public void setStockStatus(Integer stockStatus) { + this.stockStatus = stockStatus; + } + + public Integer getGoodsStatus() { + return goodsStatus; + } + + public void setGoodsStatus(Integer goodsStatus) { + this.goodsStatus = goodsStatus; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getLastUpdateTime() { + return lastUpdateTime; + } + + public void setLastUpdateTime(Date lastUpdateTime) { + this.lastUpdateTime = lastUpdateTime; + } + + public String getLastUpdateUser() { + return lastUpdateUser; + } + + public void setLastUpdateUser(String lastUpdateUser) { + this.lastUpdateUser = lastUpdateUser; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Integer getIsInventory() { + return isInventory; + } + + public void setIsInventory(Integer isInventory) { + this.isInventory = isInventory; + } + + public String getInventoryTaskId() { + return inventoryTaskId; + } + + public void setInventoryTaskId(String inventoryTaskId) { + this.inventoryTaskId = inventoryTaskId; + } + + public String getCurrentLocation() { + return currentLocation; + } + + public void setCurrentLocation(String currentLocation) { + this.currentLocation = currentLocation; + } + + public Double getShelfLife() { + return shelfLife; + } + + public void setShelfLife(Double shelfLife) { + this.shelfLife = shelfLife; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Task.java b/wms_serve/src/main/java/com/wms/entity/table/Task.java new file mode 100644 index 0000000..b39e7e6 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Task.java @@ -0,0 +1,346 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.wms.entity.BaseEntity; +import com.wms.utils.excel.ExcelExport; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 任务 + */ +public class Task extends BaseEntity { + + + /** + * 物料编号 + */ + @ExcelExport("零件号") + private String goodsId; + + /** + * 任务编号 + */ + @ExcelExport("箱号") + private String taskId; + + /** + * 物料名称 + */ + @ExcelExport("零件名称") + private String goodsName; + + + /** + * 任务类型 + */ + @ExcelExport("任务类型") + private Integer taskType; + + /** + * 任务组 + */ + @ExcelExport("任务组") + private String taskGroup; + + /** + * 起点 + */ + @ExcelExport("起点") + private String origin; + + /** + * 终点 + */ + @ExcelExport("终点") + private String destination; + + /** + * 拣选站台 + */ + @ExcelExport("拣选站台") + private String pickStand; + + /** + * 重量 + */ + @ExcelExport("重量") + private Double weight; + + /** + * 生产日期 + */ + @ExcelExport("生产日期") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productionDate; + + /** + * 过期日期 + */ + @ExcelExport("有效日期") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date expirationDate; + + /** + * 本次操作数量 + */ + @ExcelExport("操作数量") + private Integer operateNum; + + /** + * 库存总数量 + */ + @ExcelExport("库存数量") + private Integer totalNum; + + /** + * 任务优先级 + */ + @ExcelExport("任务优先级") + private Integer taskPriority; + + /** + * 卡特任务的id + */ + @ExcelExport("配件任务号") + private String kateTaskId; + + /** + * 操作人员姓名 + */ + @ExcelExport("操作人员姓名") + private String userName; + + /** + * 创建时间 + */ + @ExcelExport("创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 完成时间 + */ + @ExcelExport("任务完成时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + /** + * 任务状态 + */ + @ExcelExport("任务状态") + private Integer taskStatus; + + /** + * 载具编号 + */ + + private String vehicleNo; + + /** + * 尺寸 + */ + private Integer vehicleSize; + + + /** + * 电子标签库位 + */ + private String etagLocation; + + /** + * 备用字段 + * 1. 原包装出库的货架号 + */ + private String remark1; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getTaskType() { + return taskType; + } + + public void setTaskType(Integer taskType) { + this.taskType = taskType; + } + + public Integer getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(Integer taskStatus) { + this.taskStatus = taskStatus; + } + + public String getTaskGroup() { + return taskGroup; + } + + public void setTaskGroup(String taskGroup) { + this.taskGroup = taskGroup; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public String getPickStand() { + return pickStand; + } + + public void setPickStand(String pickStand) { + this.pickStand = pickStand; + } + + public Double getWeight() { + return weight; + } + + public void setWeight(Double weight) { + this.weight = weight; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getVehicleSize() { + return vehicleSize; + } + + public void setVehicleSize(Integer vehicleSize) { + this.vehicleSize = vehicleSize; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public Date getProductionDate() { + return productionDate; + } + + public void setProductionDate(Date productionDate) { + this.productionDate = productionDate; + } + + public Date getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(Date expirationDate) { + this.expirationDate = expirationDate; + } + + public Integer getOperateNum() { + return operateNum; + } + + public void setOperateNum(Integer operateNum) { + this.operateNum = operateNum; + } + + public Integer getTotalNum() { + return totalNum; + } + + public void setTotalNum(Integer totalNum) { + this.totalNum = totalNum; + } + + public String getEtagLocation() { + return etagLocation; + } + + public void setEtagLocation(String etagLocation) { + this.etagLocation = etagLocation; + } + + public Integer getTaskPriority() { + return taskPriority; + } + + public void setTaskPriority(Integer taskPriority) { + this.taskPriority = taskPriority; + } + + public String getKateTaskId() { + return kateTaskId; + } + + public void setKateTaskId(String kateTaskId) { + this.kateTaskId = kateTaskId; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public String getRemark1() { + return remark1; + } + + public void setRemark1(String remark1) { + this.remark1 = remark1; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/User.java b/wms_serve/src/main/java/com/wms/entity/table/User.java new file mode 100644 index 0000000..ee3c8ea --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/User.java @@ -0,0 +1,101 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.wms.entity.BaseEntity; + +import java.util.Date; + +/** + * 用户 + */ +public class User extends BaseEntity { + /** 用户ID */ + private Integer userId; + + /** 用户名 */ + private String userName; + + /** 角色Id */ + private Integer roleId = null; + + /** 登录账户 */ + private String loginAccount; + + /** 登录密码 */ + private String loginPassword; + + /** 添加时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date addTime; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** 添加用户名 */ + private String addUser; + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public Integer getRoleId() { + return roleId; + } + + public void setRoleId(Integer roleId) { + this.roleId = roleId; + } + + public String getLoginAccount() { + return loginAccount; + } + + public void setLoginAccount(String loginAccount) { + this.loginAccount = loginAccount; + } + + public String getLoginPassword() { + return loginPassword; + } + + public void setLoginPassword(String loginPassword) { + this.loginPassword = loginPassword; + } + + public Date getAddTime() { + return addTime; + } + + public void setAddTime(Date addTime) { + this.addTime = addTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getAddUser() { + return addUser; + } + + public void setAddUser(String addUser) { + this.addUser = addUser; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/table/Vehicle.java b/wms_serve/src/main/java/com/wms/entity/table/Vehicle.java new file mode 100644 index 0000000..30a7859 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/table/Vehicle.java @@ -0,0 +1,65 @@ +package com.wms.entity.table; + +import com.wms.entity.BaseEntity; + +/** + * 载具 + */ +public class Vehicle extends BaseEntity { + /** + * 载具编号 + */ + private String vehicleId; + /** + * 当前所在位置 + */ + private String currentLocation; + /** + * 载具状态 + */ + private Integer vehicleStatus; + /** + * 是否是空箱 + */ + private Integer isEmpty; + + public Vehicle() { + + } + + public Vehicle(String vehicleId) { + this.vehicleId = vehicleId; + } + + public String getVehicleId() { + return vehicleId; + } + + public void setVehicleId(String vehicleId) { + this.vehicleId = vehicleId; + } + + public String getCurrentLocation() { + return currentLocation; + } + + public void setCurrentLocation(String currentLocation) { + this.currentLocation = currentLocation; + } + + public Integer getVehicleStatus() { + return vehicleStatus; + } + + public void setVehicleStatus(Integer vehicleStatus) { + this.vehicleStatus = vehicleStatus; + } + + public Integer getIsEmpty() { + return isEmpty; + } + + public void setIsEmpty(Integer isEmpty) { + this.isEmpty = isEmpty; + } +} diff --git a/wms_serve/src/main/java/com/wms/entity/test/ExcelTest.java b/wms_serve/src/main/java/com/wms/entity/test/ExcelTest.java new file mode 100644 index 0000000..03bead4 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/entity/test/ExcelTest.java @@ -0,0 +1,36 @@ +package com.wms.entity.test; + +import com.wms.utils.excel.ExcelExport; +import com.wms.utils.excel.ExcelImport; + +public class ExcelTest { + @ExcelImport("库位") + @ExcelExport("库位") + private String locationId; + @ExcelImport("箱号") + @ExcelExport("箱号") + private String vehicleId; + + public ExcelTest(){}; + + public ExcelTest(String locationId, String vehicleId) { + this.locationId = locationId; + this.vehicleId = vehicleId; + } + + public String getLocationId() { + return locationId; + } + + public void setLocationId(String locationId) { + this.locationId = locationId; + } + + public String getVehicleId() { + return vehicleId; + } + + public void setVehicleId(String vehicleId) { + this.vehicleId = vehicleId; + } +} diff --git a/wms_serve/src/main/java/com/wms/filter/GlobalExceptionHandler.java b/wms_serve/src/main/java/com/wms/filter/GlobalExceptionHandler.java new file mode 100644 index 0000000..21c07d0 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/filter/GlobalExceptionHandler.java @@ -0,0 +1,41 @@ +package com.wms.filter; + +import com.alibaba.fastjson.JSON; +import com.wms.entity.app.container.ContainerApiLocalResponse; +import com.wms.entity.app.mes.MesApiLocalResponse; +import org.springframework.context.support.DefaultMessageSourceResolvable; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.lang.reflect.Method; +import java.util.List; +import java.util.stream.Collectors; + +@ControllerAdvice +public class GlobalExceptionHandler { + @ExceptionHandler(value = MethodArgumentNotValidException.class) + @ResponseBody + public String handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { + StringBuilder sb = new StringBuilder(); + List allErrors = e.getBindingResult().getAllErrors(); + String message = allErrors.stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining(";")); + Method method = e.getParameter().getMethod(); + if(method != null) { + Class controllerClass = method.getDeclaringClass(); + String className = controllerClass.getName(); + if(className.contains("MesController")) { + /* 给mes返回的异常信息 */ + return JSON.toJSONString(new MesApiLocalResponse(0, message)); + } + if(className.contains("ContainerController")) { + /* 给四向车返回的异常信息 */ + return JSON.toJSONString(new ContainerApiLocalResponse("999", message)); + } + } + return String.format("{\"code\": 999, \"message\": \"%s\"}", message); + } + +} diff --git a/wms_serve/src/main/java/com/wms/mapper/AppOrderInMapper.java b/wms_serve/src/main/java/com/wms/mapper/AppOrderInMapper.java new file mode 100644 index 0000000..48f031f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/AppOrderInMapper.java @@ -0,0 +1,99 @@ +package com.wms.mapper; + +import com.wms.entity.table.AppOrderIn; +import com.wms.entity.table.Location; +import com.wms.entity.table.OrderOut; +import com.wms.entity.table.Vehicle; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.Mapper; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +@Mapper +public interface AppOrderInMapper { + + /** + * 条件查询,结果会按照创建时间倒序排列 + * @param queryParam 查询条件 + * @return 查询结果 + */ + List select(AppOrderIn queryParam); + + + + + /** + * 插入一条数据 + * @param appOrderIn 要插入的数据 + * @return 插入的数据行数 + */ + int insert(AppOrderIn appOrderIn); + + + + + /** + * 批量插入数据 + * @param appOrderInList 要插入的数据 + * @return 插入的数据行数 + */ + int insertList(List appOrderInList); + + /** + * 更新一条数据 + * @param appOrderIn 要更新的数据 + * @return 更新的数据行数 + */ + int update(AppOrderIn appOrderIn); + + /** + * 删除一条数据 + * @param rowId 要删除的数据的rowId + * @return 删除的数据行数 + */ + int delete(String rowId); + + + + /** + * 条件查询 + * @param searchStr 查询字符串 + * @param orderStatus 状态 + * @return 查询结果 + */ + List selectWithParams(@Param("searchStr") String searchStr, @Param("orderStatus") List orderStatus); + + + /** + * 根据车辆编号更新状态 + * @param vehicleNo 车辆编号 + * @param orderStatus 状态 + * @return 更新的数据行数 + */ + int updateStatusWithVehicleNo(@Param("vehicleNo") String vehicleNo, @Param("orderStatus") Integer orderStatus); + + + /** + * 根据车辆编号查询 + * @param vehicleNo 车辆编号 + * @return 查询结果 + */ + List selectWithVehicle(@Param("vehicleNo") String vehicleNo); + + + + List selectWithGoodsId(@Param("goodsId") String goodsId); + + + List selectWithRowId(@Param("rowId") String rowId); + + + //List selectWithBatchNo(@Param("batchNo") String batchNo, @Param("goodsNum") BigDecimal goodsNum); + + List selectWithBatchNo(Map params); + + + int deleteByCheckNoGood(String remark); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/ConfigMapper.java b/wms_serve/src/main/java/com/wms/mapper/ConfigMapper.java new file mode 100644 index 0000000..55d19c7 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/ConfigMapper.java @@ -0,0 +1,26 @@ +package com.wms.mapper; + +import com.wms.entity.table.Config; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 配置 + */ +@Mapper +public interface ConfigMapper { + /** + * 通过键查询配置值(configKey为null或者空时,查询所有的键值) + * @param configKey 键值 + * @return 结果 + */ + List selectConfigs(String configKey); + + /** + * 更新系统配置信息 + * @param config 配置 + * @return 结果 + */ + int updateConfig(Config config); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/GoodsMapper.java b/wms_serve/src/main/java/com/wms/mapper/GoodsMapper.java new file mode 100644 index 0000000..424259c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/GoodsMapper.java @@ -0,0 +1,45 @@ +package com.wms.mapper; + +import com.wms.entity.table.Goods; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface GoodsMapper { + + /** + * 查询物料信息 + * @param goods + * @return + */ + List selGoods(Goods goods); + + /** + * 根据物料id查询物料信息 + * @param goodsId + * @return + */ + Goods selGoodsByGoodsId(String goodsId); + + /** + * 添加物料信息 + * @param goods + * @return + */ + int addGoods(Goods goods); + + /** + * 修改物料信息 + * @param goods + * @return + */ + int modifyGoods(Goods goods); + + /** + * 删除物料信息 + * @param goodsId + * @return + */ + int deleteGoods(String goodsId); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/LocationMapper.java b/wms_serve/src/main/java/com/wms/mapper/LocationMapper.java new file mode 100644 index 0000000..c73f5c6 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/LocationMapper.java @@ -0,0 +1,44 @@ +package com.wms.mapper; + +import com.wms.entity.table.Location; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface LocationMapper { + + int selectAll(Location location); + /** + * 查询库位列表 + * @param location + * @return + */ + + + List selLocations(Location location); + + + List selSmallDepthLocations(Location location); + + /** + * 查找下一个可用库位 + * @param location 具体信息 + * @return 结果 + */ + List selNextLocation(Location location); + + /** + * 添加一个新库位 + * @param location 库位信息 + * @return 添加结果 + */ + int addLocation(Location location); + + /** + * 修改库位信息 + * @param location + * @return + */ + int modifyLocation(Location location); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/MenuMapper.java b/wms_serve/src/main/java/com/wms/mapper/MenuMapper.java new file mode 100644 index 0000000..6512fc5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/MenuMapper.java @@ -0,0 +1,15 @@ +package com.wms.mapper; + +import com.wms.entity.table.Menu; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 菜单Mapper + */ +@Mapper +public interface MenuMapper { + + List selMenuByRoleId(int roleId); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/OrderCheckMapper.java b/wms_serve/src/main/java/com/wms/mapper/OrderCheckMapper.java new file mode 100644 index 0000000..0e2d17f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/OrderCheckMapper.java @@ -0,0 +1,42 @@ +package com.wms.mapper; + +import com.wms.entity.table.OrderCheck; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper +public interface OrderCheckMapper { + + /** + * 插入一条记录 + * @param orderCheck 记录 + * @return 插入数量 + */ + int insert(OrderCheck orderCheck); + + /** + * 条件查询 + * @param orderCheck 查询条件 + * @return 查询结果 + */ + List query(OrderCheck orderCheck); + + List queryByRecordId(String recordId); + /** + * 插入 批量 + * @param orderChecks 记录 + * @return 插入数量 + */ + int insertList(List orderChecks); + + + List queryAll(); + + + int delete(String record_id); + + + + +} diff --git a/wms_serve/src/main/java/com/wms/mapper/OrderOutMapper.java b/wms_serve/src/main/java/com/wms/mapper/OrderOutMapper.java new file mode 100644 index 0000000..7bfdf69 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/OrderOutMapper.java @@ -0,0 +1,51 @@ +package com.wms.mapper; + +import com.wms.entity.table.OrderOut; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper +public interface OrderOutMapper { + + /** + * 插入 + * @param data 要插入的数据 + * @return 插入的行数 + */ + int insert(OrderOut data); + + int update(OrderOut data); + /** + * 批量插入 + * @param data 要插入的数据 + * @return 插入的行数 + */ + int insertList(List data); + + /** + * 删除 + * @param rowId 要删除的数据的rowId + * @return 删除的行数 + */ + int deleteOrderOut(String rowId); + + /** + * 查询数据 + * @param data 查询条件 + * @return 查到的数据 + */ + List query(OrderOut data); + + List queryWithRowId(@Param("rowId") String rowId); + + /** + * 查询数据 + * @param searchStr 查询条件 + * @param orderStatus 查询条件 + * @return 查到的数据 + */ + List queryWithParams(@Param("searchStr") String searchStr, @Param("orderStatus") List orderStatus); + +} diff --git a/wms_serve/src/main/java/com/wms/mapper/PartInfoMapper.java b/wms_serve/src/main/java/com/wms/mapper/PartInfoMapper.java new file mode 100644 index 0000000..5f2c9e5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/PartInfoMapper.java @@ -0,0 +1,15 @@ +package com.wms.mapper; + +import com.wms.entity.table.PartInfo; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface PartInfoMapper { + List selParts(PartInfo partInfo); + PartInfo selPartByPartNo(String material); + int addPart(PartInfo partInfo); + int modifyPart(PartInfo partInfo); + int deletePartByPartNo(String material); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/StandMapper.java b/wms_serve/src/main/java/com/wms/mapper/StandMapper.java new file mode 100644 index 0000000..cedcf7d --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/StandMapper.java @@ -0,0 +1,19 @@ +package com.wms.mapper; + +import com.wms.entity.table.Stand; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface StandMapper { + List selStands(Stand stand); + + Stand selStandById(String standId); + + int addStand(Stand stand); + + int modifyStand(Stand stand); + + int deleteStand(Stand stand); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/StockMapper.java b/wms_serve/src/main/java/com/wms/mapper/StockMapper.java new file mode 100644 index 0000000..6281267 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/StockMapper.java @@ -0,0 +1,160 @@ +package com.wms.mapper; + +import com.wms.entity.table.AppOrderIn; +import com.wms.entity.table.Stock; +import com.wms.entity.table.Task; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface StockMapper { + + /** + * 查询库存列表 + * @param stock 库存参数 + * @return 结果 + */ + List selStocks(Stock stock); + + /** + * 查询库存,前端用 + * @param query 查询键值 + * @return 结果 + */ + List selStocksFront(@Param("query") String query); + + /** + * 添加库存 + * @param stock + * @return + */ + int addStock(Stock stock); + + /** + * 修改库存信息 + * @param stock + * @return + */ + int modifyStock(Stock stock); + + + /** + * 根据批次号分组查询库存 + * @param + * @return + */ + List groupByVehicleNo(@Param("locationId") String locationId); + + + + List groupByBatchNo(@Param("locationId") String locationId); + + /** + * 修改库存存储的位置 + * @param oldLocationId 旧库位 + * @param newLocationId 新库位 + * @return 结果 + */ + int updateLocation(@Param("oldLocationId") String oldLocationId, @Param("newLocationId") String newLocationId); + + /** + * 更新库存里的库位和库存状态 + * @param oldLocationId 旧库位 + * @param newLocationId 新库位 + * @param status 状态 + * @return 结果 + */ + int updateLocationAndStatus(@Param("oldLocationId") String oldLocationId, @Param("newLocationId") String newLocationId, @Param("status") Integer status); + + /** + * 删除库存 + * @param stockId + * @return + */ + int deleteStock(String stockId); + + /** + * 根据库位删除库存 + * @param locationId 库位 + * @return 删除结果 + */ + int deleteStockWithLocationId(@Param("locationId") String locationId); + + /** + * 根据库位更新库位状态 + * @param locationId 库位 + * @param status 状态 + * @return 更新结果 + */ + int updateStockStatusWithLocationId(@Param("locationId") String locationId, @Param("status") Integer status); + + + /** + * 根据库存id更新库存可用数量 + * @param stockId 库存id + * @param availableNum 可用数量 + * @return 更新结果 + */ + int updateStockAvailableNumWithStockId(@Param("stockId") String stockId, @Param("availableNum") Integer availableNum); + + + /** + * 根据库存id更新库存生产日期 + * @param stockId 库存id + * @param productionDate 生产日期 + * @return 更新结果 + */ + int updateStockProductionDateWithStockId(@Param("stockId") String stockId, @Param("productionDate") Date productionDate); + + + + + int updateLocationIdWithBetchNo(@Param("batchNo") String batchNo, @Param("locationId") String locationId); + + + + /** + * 根据商品id查询库存 + * @param stock + * @return + */ + List selStocksByGoodsId(Stock stock); + + + + /** + * 根据库位查询库存 + * @param + * @return + */ + List selStocksByLocationId(@Param("locationId") String locationId); + /** + * 查询过期库存 + * @return + */ + List selStockOutOfDate(); + + /** + * 查询库存快过期的库存 + * @param nearInterval 快过期的间隔天数 + * @return + */ + List selStockNearDeadLine(int nearInterval); + + /** + * 查询库存长时间未使用 + * @param nearInterval 长时间未使用的间隔天数 + * @return + */ + List selStockLongTimeNoUse(int nearInterval); + + /** + * 重置库存 + * @param stock + * @return + */ + int resetStock(Stock stock); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/TaskMapper.java b/wms_serve/src/main/java/com/wms/mapper/TaskMapper.java new file mode 100644 index 0000000..e0cb70b --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/TaskMapper.java @@ -0,0 +1,51 @@ +package com.wms.mapper; + +import com.wms.entity.table.Task; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface TaskMapper { + + /** + * 查找任务 + * @param task + * @return 符合条件的任务列表 + */ + List selTasks(Task task); + + + + List selTasksByTaskId(Task task); + /** + * 添加任务 + * @param task + * @return + */ + int addTask(Task task); + + /** + * 添加任务 + * @param tasks + * @return + */ + int addTasks(List tasks); + + /** + * 执行任务 + * @param task + * @return + */ + int executeTask(Task task); + + /** + * 删除任务 + * @param taskId + * @return + */ + int deleteTask(String taskId); + + + List haveNotCompleteTask(String location); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/TaskRecordMapper.java b/wms_serve/src/main/java/com/wms/mapper/TaskRecordMapper.java new file mode 100644 index 0000000..f100620 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/TaskRecordMapper.java @@ -0,0 +1,40 @@ +package com.wms.mapper; + +import com.wms.entity.table.Task; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface TaskRecordMapper { + + /** + * 查找任务记录 + * @param taskRecord 任务记录 + * @return 符合条件的任务列表 + */ + List selTasks(Task taskRecord); + + /** + * 添加任务记录 + * @param taskRecord 任务记录 + * @return 结果 + */ + int addTask(Task taskRecord); + + /** + * 更新任务记录 + * @param taskRecord 任务记录 + * @return 结果 + */ + int executeTask(Task taskRecord); + + /** + * 删除任务 + * @param taskId 任务记录 + * @return 结果 + */ + int deleteTask(String taskId); + + int deleteTaskRecordRegularly(); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/UserMapper.java b/wms_serve/src/main/java/com/wms/mapper/UserMapper.java new file mode 100644 index 0000000..9538961 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/UserMapper.java @@ -0,0 +1,16 @@ +package com.wms.mapper; + +import com.wms.entity.table.User; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface UserMapper { + /** + * 查找用户 + * @param user + * @return + */ + List selectUsers(User user); +} diff --git a/wms_serve/src/main/java/com/wms/mapper/VehicleMapper.java b/wms_serve/src/main/java/com/wms/mapper/VehicleMapper.java new file mode 100644 index 0000000..c7aa4e8 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/mapper/VehicleMapper.java @@ -0,0 +1,44 @@ +package com.wms.mapper; + +import com.wms.entity.table.Vehicle; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface VehicleMapper { + /** + * 根据条件查找载具 + * @param vehicle 载具信息 + * @return 查询到的载具 + */ + List selVehicles(Vehicle vehicle); + + /** + * 根据id查询载具 + * @param vehicleId 载具id + * @return 结果 + */ + Vehicle selVehicleById(String vehicleId); + + /** + * 添加载具 + * @param vehicle 载具 + * @return 结果 + */ + int addVehicle(Vehicle vehicle); + + /** + * 更新载具 + * @param vehicle 载具 + * @return 结果 + */ + int modifyVehicle(Vehicle vehicle); + + /** + * 删除载具 + * @param vehicle 载具 + * @return 结果 + */ + int deleteVehicle(Vehicle vehicle); +} diff --git a/wms_serve/src/main/java/com/wms/service/ConfigService.java b/wms_serve/src/main/java/com/wms/service/ConfigService.java new file mode 100644 index 0000000..397ecd9 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/ConfigService.java @@ -0,0 +1,20 @@ +package com.wms.service; + +import com.wms.entity.table.Config; + +import java.util.List; + +public interface ConfigService { + /** + * 通过键查询配置值(configKey为null或者空时,查询所有的键值) + * @param configKey 配置键值 + * @return 结果 + */ + List selectConfigs(String configKey); + + /** + * 更新系统配置信息 + * @param config 配置 + */ + int updateConfig(Config config); +} diff --git a/wms_serve/src/main/java/com/wms/service/ContainerService.java b/wms_serve/src/main/java/com/wms/service/ContainerService.java new file mode 100644 index 0000000..1fa5a38 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/ContainerService.java @@ -0,0 +1,27 @@ +package com.wms.service; + +import com.wms.entity.app.container.ContainerApiLocalResponse; +import com.wms.entity.app.container.CreateInstoreTaskRequest; +import com.wms.entity.app.container.CreateInstoreTaskResponse; +import com.wms.entity.app.container.TaskStateNoticeRequest; + +/** + * 四向车api的Service + */ +public interface ContainerService { + + /** + * 接收四向车扫码入库信息 + * @param request 请求信息 + * @return 返回信息 + */ + CreateInstoreTaskResponse createInstoreTask(CreateInstoreTaskRequest request); + + + /** + * 接收四向车任务状态通知 + * @param request 请求信息 + * @return 响应信息 + */ + ContainerApiLocalResponse taskStateNotice( TaskStateNoticeRequest request); +} diff --git a/wms_serve/src/main/java/com/wms/service/GoodsService.java b/wms_serve/src/main/java/com/wms/service/GoodsService.java new file mode 100644 index 0000000..3c645f4 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/GoodsService.java @@ -0,0 +1,43 @@ +package com.wms.service; + +import com.wms.entity.table.Goods; + +import java.util.List; + +public interface GoodsService { + + /** + * 查询物料信息 + * @param goods 物料 + * @return 结果 + */ + List selGoods(Goods goods); + + /** + * 根据物料id查询物料信息 + * @param goodsId 物料id + * @return 结果 + */ + Goods selGoodsByGoodsId(String goodsId); + + /** + * 添加物料信息 + * @param goods 物料信息 + * @return 物料 + */ + int addGoods(Goods goods); + + /** + * 修改物料信息 + * @param goods 物料信息 + * @return 结果 + */ + int modifyGoods(Goods goods); + + /** + * 删除物料信息 + * @param goodsId 物料id + * @return 结果 + */ + int deleteGoods(String goodsId); +} diff --git a/wms_serve/src/main/java/com/wms/service/IOrderCheckService.java b/wms_serve/src/main/java/com/wms/service/IOrderCheckService.java new file mode 100644 index 0000000..731228e --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/IOrderCheckService.java @@ -0,0 +1,21 @@ +package com.wms.service; + +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderCheck.queryOrderCheckRequest; +import com.wms.entity.table.OrderCheck; + +import java.util.List; + +public interface IOrderCheckService { + + WmsApiResponse> queryOrderCheck(queryOrderCheckRequest request); + + WmsApiResponse executeOrderCheck(String recordId); + + WmsApiResponse deleteOrderCheck(String recordId); + + WmsApiResponse deleteOrderCheckAll(String remarkReturn); + + WmsApiResponse issueOrderCheck(); + +} diff --git a/wms_serve/src/main/java/com/wms/service/IOrderInService.java b/wms_serve/src/main/java/com/wms/service/IOrderInService.java new file mode 100644 index 0000000..efb2656 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/IOrderInService.java @@ -0,0 +1,28 @@ +package com.wms.service; + +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderIn.bindingVehicleRequest; +import com.wms.entity.dto.orderIn.downOrderInRequest; +import com.wms.entity.dto.orderIn.queryOrderInRequest; +import com.wms.entity.dto.orderIn.updateNumRequest; +import com.wms.entity.table.AppOrderIn; + +import java.math.BigDecimal; +import java.util.List; + +public interface IOrderInService { + + WmsApiResponse> queryOrderIn(queryOrderInRequest request); + + WmsApiResponse addOrderIn(downOrderInRequest request); + + WmsApiResponse bindingVehicle(bindingVehicleRequest request); + + WmsApiResponse updateForNum(updateNumRequest request); + + WmsApiResponse> getOrderInWithVehicleNo(String vehicleNo); + + WmsApiResponse unBindingVehicle(String rowId); + + WmsApiResponse deleteOrderIn(String rowId); +} diff --git a/wms_serve/src/main/java/com/wms/service/IOrderOutService.java b/wms_serve/src/main/java/com/wms/service/IOrderOutService.java new file mode 100644 index 0000000..d23e141 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/IOrderOutService.java @@ -0,0 +1,26 @@ +package com.wms.service; + +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderOut.handOrderOutRequest; +import com.wms.entity.dto.orderOut.queryOrderOutRequest; +import com.wms.entity.table.OrderOut; + +import java.util.List; + +public interface IOrderOutService { + + WmsApiResponse> queryOrderOut(queryOrderOutRequest request); + + WmsApiResponse executeOrderOut(String rowId); + + WmsApiResponse deleteOrderOut(String rowId); + + WmsApiResponse createOrderOut(handOrderOutRequest request); + + boolean createEmptyLocation(handOrderOutRequest request); + + WmsApiResponse updateLocation(handOrderOutRequest request); + + //WmsApiResponse outRowStock(String rowId); + +} diff --git a/wms_serve/src/main/java/com/wms/service/LocationService.java b/wms_serve/src/main/java/com/wms/service/LocationService.java new file mode 100644 index 0000000..5a436b0 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/LocationService.java @@ -0,0 +1,36 @@ +package com.wms.service; + +import com.wms.entity.table.Location; + +import java.util.List; + +public interface LocationService { + + /** + * 查询库位列表 + * @param location 库位查询参数 + * @return 结果 + */ + List selLocations(Location location); + + /** + * 查找下一个可用库位 + * @param location 设备id + * @return 结果 + */ + List selNextLocation(Location location); + + /** + * 添加一个新库位 + * @param location 库位信息 + * @return 添加结果 + */ + int addLocation(Location location); + + /** + * 修改库位信息 + * @param location 库位 + * @return 结果 + */ + int modifyLocation(Location location); +} diff --git a/wms_serve/src/main/java/com/wms/service/MenuService.java b/wms_serve/src/main/java/com/wms/service/MenuService.java new file mode 100644 index 0000000..c69626a --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/MenuService.java @@ -0,0 +1,14 @@ +package com.wms.service; + +import com.wms.entity.table.Menu; + +import java.util.List; + +public interface MenuService { + /** + * 根据角色查找对应的菜单/权限 + * @param roleId 角色id + * @return 结果 + */ + List selMenuByRoleId(int roleId); +} diff --git a/wms_serve/src/main/java/com/wms/service/MesService.java b/wms_serve/src/main/java/com/wms/service/MesService.java new file mode 100644 index 0000000..1944d68 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/MesService.java @@ -0,0 +1,36 @@ +package com.wms.service; + +import com.wms.entity.app.mes.CheckNoticeRequest; +import com.wms.entity.app.mes.MesApiLocalResponse; +import com.wms.entity.app.mes.OutNoticeRequest; +import com.wms.entity.app.mes.ReceiptInRequest; + +/** + * 上位系统交互 + * Mes 交互 Service + * @author icewint + */ +public interface MesService { + + /** + * mes 入库之前用此接口推送信息 + * @param request 请求信息 + * @return 返回信息 + */ + MesApiLocalResponse receiptIn(ReceiptInRequest request); + + /** + * mes 出库通知单 + * @param request 请求信息 + * @return 返回信息 + */ + MesApiLocalResponse outNotice(OutNoticeRequest request); + + /** + * mes 盘点通知单 IF206 + * @param request 请求信息 + * @return 返回信息 + */ + MesApiLocalResponse checkNotice(CheckNoticeRequest request); + +} diff --git a/wms_serve/src/main/java/com/wms/service/PartInfoService.java b/wms_serve/src/main/java/com/wms/service/PartInfoService.java new file mode 100644 index 0000000..af752b0 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/PartInfoService.java @@ -0,0 +1,42 @@ +package com.wms.service; + +import com.wms.entity.table.PartInfo; + +import java.util.List; + +public interface PartInfoService { + /** + * 查询零件信息 + * @param partInfo 零件信息 + * @return 结果 + */ + List selParts(PartInfo partInfo); + + /** + * 根据零件号查询零件信息 + * @param material 零件号 + * @return 结果 + */ + PartInfo selPartByPartNo(String material); + + /** + * 添加零件 + * @param partInfo 零件信息 + * @return 结果 + */ + int addPart(PartInfo partInfo); + + /** + * 更新零件信息 + * @param partInfo 新的零件信息 + * @return 结果 + */ + int modifyPart(PartInfo partInfo); + + /** + * 根据零件号删除零件 + * @param material 零件号 + * @return 结果 + */ + int deletePartByPartNo(String material); +} diff --git a/wms_serve/src/main/java/com/wms/service/StandService.java b/wms_serve/src/main/java/com/wms/service/StandService.java new file mode 100644 index 0000000..23d6f42 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/StandService.java @@ -0,0 +1,45 @@ +package com.wms.service; + +import com.wms.entity.table.Stand; + +import java.util.List; + +/** + * + */ +public interface StandService { + /** + * 查询站台 + * @param stand 查询参数 + * @return 结果 + */ + List selStands(Stand stand); + + /** + * 根据站台id查询站台 + * @param standId 站台id + * @return 结果 + */ + Stand selStandById(String standId); + + /** + * 添加新站台 + * @param stand 站台信息 + * @return 结果 + */ + int addStand(Stand stand); + + /** + * 更新站台信息 + * @param stand 更新参数 + * @return 结果 + */ + int modifyStand(Stand stand); + + /** + * 删除站台 + * @param stand 删除参数 + * @return 结果 + */ + int deleteStand(Stand stand); +} diff --git a/wms_serve/src/main/java/com/wms/service/StockService.java b/wms_serve/src/main/java/com/wms/service/StockService.java new file mode 100644 index 0000000..301fc44 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/StockService.java @@ -0,0 +1,77 @@ +package com.wms.service; + +import com.wms.entity.table.Stock; + +import java.util.List; + +public interface StockService { + + /** + * 查询库存列表 + * @param stock 库存查询参数 + * @return 结果 + */ + List selStocks(Stock stock); + + /** + * 前端用查询库存 + * @param query 查询键值 + * @return 结果 + */ + List selStocksFront(String query); + + /** + * 添加库存 + * @param stock 库存信息 + * @return 结果 + */ + int addStock(Stock stock); + + /** + * 修改库存信息 + * @param stock 库存信息 + * @return 结果 + */ + int modifyStock(Stock stock); + + /** + * 删除库存 + * @param stockId 库存id + * @return 结果 + */ + int deleteStock(String stockId); + + /** + * 根据零件号查询零件总数 + * @param stock 参数 + * @return 结果 + */ + List selStocksByGoodsId(Stock stock); + + /** + * 查询过期的合格物料 + * @return 结果 + */ + List selStockOutOfDate(); + + /** + * 查询临近期限的合格物料 + * @param nearInterval 天数 + * @return 结果 + */ + List selStockNearDeadLine(int nearInterval); + + /** + * 查询长时间未使用的库存 + * @param nearInterval 天数 + * @return 结果 + */ + List selStockLongTimeNoUse(int nearInterval); + + /** + * 重置库存数量 + * @param stock 参数 + * @return 结果 + */ + int resetStock(Stock stock); +} diff --git a/wms_serve/src/main/java/com/wms/service/TaskRecordService.java b/wms_serve/src/main/java/com/wms/service/TaskRecordService.java new file mode 100644 index 0000000..b362f80 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/TaskRecordService.java @@ -0,0 +1,42 @@ +package com.wms.service; + +import com.wms.entity.table.Task; + +import java.util.List; + +public interface TaskRecordService { + + /** + * 查找任务记录 + * @param taskRecord 任务记录 + * @return 符合条件的任务列表 + */ + List selTasks(Task taskRecord); + + /** + * 添加任务记录 + * @param taskRecord 任务记录 + * @return 结果 + */ + int addTask(Task taskRecord); + + /** + * 更新任务记录 + * @param taskRecord 任务记录 + * @return 结果 + */ + int executeTask(Task taskRecord); + + /** + * 删除任务记录 + * @param taskId 任务id + * @return 结果 + */ + int deleteTask(String taskId); + + /** + * 定期删除任务记录 + * @return 结果 + */ + int deleteTaskRecordRegularly(); +} diff --git a/wms_serve/src/main/java/com/wms/service/TaskService.java b/wms_serve/src/main/java/com/wms/service/TaskService.java new file mode 100644 index 0000000..fed2bf2 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/TaskService.java @@ -0,0 +1,38 @@ +package com.wms.service; + +import com.wms.entity.table.Task; + +import java.util.List; + +public interface TaskService{ + + /** + * 查找任务 + * @param task 任务 + * @return 符合条件的任务列表 + */ + List selTasks(Task task); + + /** + * 添加任务 + * @param task 任务 + * @return 结果 + */ + int addTask(Task task); + + List selTasksByTaskId(Task task); + + /** + * 执行任务 + * @param task 任务 + * @return 结果 + */ + int executeTask(Task task); + + /** + * 删除任务 + * @param taskId 任务id + * @return 结果 + */ + int deleteTask(String taskId); +} diff --git a/wms_serve/src/main/java/com/wms/service/UserService.java b/wms_serve/src/main/java/com/wms/service/UserService.java new file mode 100644 index 0000000..31b9141 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/UserService.java @@ -0,0 +1,15 @@ +package com.wms.service; + +import com.wms.entity.table.User; + +import java.util.List; + +public interface UserService { + + /** + * 查找用户 + * @param user 用户 + * @return 结果 + */ + List selectUsers(User user); +} diff --git a/wms_serve/src/main/java/com/wms/service/VehicleService.java b/wms_serve/src/main/java/com/wms/service/VehicleService.java new file mode 100644 index 0000000..ad6c29c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/VehicleService.java @@ -0,0 +1,42 @@ +package com.wms.service; + +import com.wms.entity.table.Vehicle; + +import java.util.List; + +public interface VehicleService { + /** + * 根据条件查找载具 + * @param vehicle 载具信息 + * @return 查询到的载具 + */ + List selVehicles(Vehicle vehicle); + + /** + * 根据id查询载具 + * @param vehicleId 载具id + * @return 结果 + */ + Vehicle selVehicleById(String vehicleId); + + /** + * 添加载具 + * @param vehicle 载具 + * @return 结果 + */ + int addVehicle(Vehicle vehicle); + + /** + * 更新载具 + * @param vehicle 载具 + * @return 结果 + */ + int modifyVehicle(Vehicle vehicle); + + /** + * 删除载具 + * @param vehicle 载具 + * @return 结果 + */ + int deleteVehicle(Vehicle vehicle); +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java new file mode 100644 index 0000000..e2eff9f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java @@ -0,0 +1,30 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Config; +import com.wms.mapper.ConfigMapper; +import com.wms.service.ConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ConfigServiceImplement implements ConfigService { + + private final ConfigMapper configMapper; + + @Autowired + public ConfigServiceImplement(ConfigMapper configMapper){ + this.configMapper = configMapper; + } + + @Override + public List selectConfigs(String configKey) { + return this.configMapper.selectConfigs(configKey); + } + + @Override + public int updateConfig(Config config) { + return this.configMapper.updateConfig(config); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java new file mode 100644 index 0000000..ed7ce66 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java @@ -0,0 +1,45 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Goods; +import com.wms.mapper.GoodsMapper; +import com.wms.service.GoodsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class GoodsServiceImplements implements GoodsService { + + + private final GoodsMapper goodsMapper; + @Autowired + public GoodsServiceImplements(GoodsMapper goodsMapper) { + this.goodsMapper = goodsMapper; + } + + @Override + public List selGoods(Goods goods){ + return this.goodsMapper.selGoods(goods); + } + + @Override + public Goods selGoodsByGoodsId(String goodsId) { + return this.goodsMapper.selGoodsByGoodsId(goodsId); + } + + @Override + public int addGoods(Goods goods) { + return this.goodsMapper.addGoods(goods); + } + + @Override + public int modifyGoods(Goods goods) { + return this.goodsMapper.modifyGoods(goods); + } + + @Override + public int deleteGoods(String goodsId) { + return this.goodsMapper.deleteGoods(goodsId); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java new file mode 100644 index 0000000..ecfabd4 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java @@ -0,0 +1,39 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Location; +import com.wms.mapper.LocationMapper; +import com.wms.service.LocationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class LocationServiceImplements implements LocationService { + + private final LocationMapper locationMapper; + @Autowired + public LocationServiceImplements(LocationMapper locationMapper) { + this.locationMapper = locationMapper; + } + + @Override + public List selLocations(Location location) { + return this.locationMapper.selLocations(location); + } + + @Override + public List selNextLocation(Location location) { + return locationMapper.selNextLocation(location); + } + + @Override + public int addLocation(Location location) { + return locationMapper.addLocation(location); + } + + @Override + public int modifyLocation(Location location) { + return this.locationMapper.modifyLocation(location); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/MenuServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/MenuServiceImplements.java new file mode 100644 index 0000000..f4ca5b1 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/MenuServiceImplements.java @@ -0,0 +1,25 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Menu; +import com.wms.mapper.MenuMapper; +import com.wms.service.MenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class MenuServiceImplements implements MenuService { + + + private final MenuMapper menuMapper; + @Autowired + public MenuServiceImplements(MenuMapper menuMapper) { + this.menuMapper = menuMapper; + } + + @Override + public List selMenuByRoleId(int roleId) { + return this.menuMapper.selMenuByRoleId(roleId); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderCheckImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderCheckImplements.java new file mode 100644 index 0000000..d160dc0 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderCheckImplements.java @@ -0,0 +1,168 @@ +package com.wms.service.serviceImplements; + +import com.wms.constants.enums.OrderCheckStatusEnum; +import com.wms.constants.enums.OrderOutStatusEnum; +import com.wms.constants.enums.TaskType; +import com.wms.entity.app.mes.MesApiLocalResponse; +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderCheck.queryOrderCheckRequest; +import com.wms.entity.table.AppOrderIn; +import com.wms.entity.table.OrderCheck; +import com.wms.entity.table.Stock; +import com.wms.entity.table.Task; +import com.wms.mapper.AppOrderInMapper; +import com.wms.mapper.OrderCheckMapper; +import com.wms.mapper.StockMapper; +import com.wms.service.IOrderCheckService; +import com.wms.utils.WmsUtils; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class OrderCheckImplements implements IOrderCheckService { + + private final OrderCheckMapper orderCheckMapper; + + private final StockMapper stockMapper; + + private final com.wms.mapper.TaskMapper taskMapper; + + private final AppOrderInMapper appOrderInMapper; + + private static final Logger log = LoggerFactory.getLogger(OrderOutImplements.class); + + /** + * 查询订单 + */ + public WmsApiResponse> queryOrderCheck(queryOrderCheckRequest request){ + if(request.getOrderStatus() == null || request.getOrderStatus().isEmpty()) { + return new WmsApiResponse<>(0, "查询成功", new ArrayList<>()); // 没有查询参数,返回空 + } + List orderChecks = orderCheckMapper.queryAll(); + return new WmsApiResponse<>(0, "查询成功", orderChecks); + } + + /** + * 执行盘点订单 + */ + public WmsApiResponse executeOrderCheck(String recordId){ + //根据recordId去盘点单中找对应的盘点任务 + List orderCheckTask = orderCheckMapper.queryByRecordId(recordId); + if(orderCheckTask == null || orderCheckTask.isEmpty()) { + return new WmsApiResponse<>(0, "该条记录不存在", null); + } + OrderCheck orderCheck = orderCheckTask.get(0); + // 将该盘点单号对应的库别全部生成盘点任务 + List checkTasks = new ArrayList<>(); // 盘点任务列表 + Stock queryStock = new Stock(); + queryStock.setWarehouseName("四向车库"); + queryStock.setStockStatus(0); + List stockList = stockMapper.selStocks(queryStock); + if(stockList == null || stockList.isEmpty()) { + return new WmsApiResponse<>(0, String.format("该库别没有库存,请稍后再试,库别:%s", orderCheck.getWarehouse()), null); + } + // 检查这些应该盘点的库位有没有任务在执行 + for(Stock stock : stockList) { + List notCompleteTasks = taskMapper.haveNotCompleteTask(stock.getLocationId()); + if(notCompleteTasks == null) { + return new WmsApiResponse<>(0, String.format("数据库校验任务失败,请稍后再试,库位:%s", stock.getLocationId()), null); + } + if(!notCompleteTasks.isEmpty()) { + return new WmsApiResponse<>(0, String.format("该库位有任务在执行,请稍后再试,库位:%s", stock.getLocationId()), null); + } + Task task = new Task(); + task.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + task.setTaskType(TaskType.INVENTORY.getCode()); + task.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); + task.setTaskGroup(orderCheck.getCheckId()); + task.setOrigin(stock.getLocationId()); + task.setDestination("111"); + task.setPickStand(""); + task.setWeight(0.0); + task.setVehicleNo(stock.getVehicleId()); + task.setCreateTime(new Date()); + task.setUserName("mes"); + task.setGoodsId(stock.getGoodsId()); + task.setGoodsName(stock.getGoodsName()); + task.setOperateNum(stock.getRealNum()); + task.setTotalNum(stock.getRealNum()); + task.setTaskPriority(1); + task.setRemark1("盘点出库"); + checkTasks.add(task); + } + int addTasks = taskMapper.addTasks(checkTasks); + if(addTasks == checkTasks.size()) { + //删除对应的盘点单 + int deleteResult = orderCheckMapper.delete(recordId); + if (deleteResult > 0){ + log.info("添加任务成功,删除盘点单成功,任务:{}", checkTasks); + } + return new WmsApiResponse<>(1, "添加成功", null); + } + return new WmsApiResponse<>(0, "添加失败", null); + } + + + + /** + * 删除订单 + */ + public WmsApiResponse deleteOrderCheck(String recordId) { + try { + // 确保 orderId 不为空 + if (recordId == null) { + return new WmsApiResponse<>(1, "执行失败,参数错误", null); + } + // 调用 Mapper 方法执行删除操作 + int deletedResult = orderCheckMapper.delete(recordId); + // 检查删除是否成功 + if (deletedResult > 0) { + return new WmsApiResponse<>(0, "删除成功", true); + } else { + return new WmsApiResponse<>(1, "订单不存在", false); + } + } catch (Exception e) { + // 记录异常 + return new WmsApiResponse<>(1, "删除失败", false); + } + } + + + + public WmsApiResponse deleteOrderCheckAll(String remarkReturn){ + try { + int deletedResult = appOrderInMapper.deleteByCheckNoGood("盘点回库"); + if (deletedResult > 0) { + return new WmsApiResponse<>(0, "删除成功", true); + } else { + return new WmsApiResponse<>(1, "订单不存在", false); + } + }catch (Exception e){ + return new WmsApiResponse<>(1, "删除失败", false); + } + } + + public WmsApiResponse issueOrderCheck(){ + try { + OrderCheck orderCheck = new OrderCheck(); + orderCheck.setRecordId(WmsUtils.generateUUIDString()); + orderCheck.setCheckId(WmsUtils.generateUUIDString()); + orderCheck.setWarehouse("100001"); + orderCheck.setStatus(OrderCheckStatusEnum.CREATED.getCode()); + orderCheck.setCreateTime(new Date()); + int insertOrderCheckResult = orderCheckMapper.insert(orderCheck); + if(insertOrderCheckResult > 0) { + return new WmsApiResponse<>(1, "添加成功", true); + } + return new WmsApiResponse<>(0, "添加失败,请稍后再试",false); + }catch (Exception e){ + return new WmsApiResponse<>(1, "生成盘点任务异常", false); + } + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java new file mode 100644 index 0000000..3646fc5 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java @@ -0,0 +1,293 @@ +package com.wms.service.serviceImplements; + +import com.wms.constants.enums.OrderInStatusEnum; +import com.wms.constants.enums.OrderOutStatusEnum; +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderIn.bindingVehicleRequest; +import com.wms.entity.dto.orderIn.downOrderInRequest; +import com.wms.entity.dto.orderIn.queryOrderInRequest; +import com.wms.entity.dto.orderIn.updateNumRequest; +import com.wms.entity.table.AppOrderIn; +import com.wms.entity.table.OrderOut; +import com.wms.service.IOrderInService; +import com.wms.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; + +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class OrderInImplement implements IOrderInService { + + private static final Logger log = LoggerFactory.getLogger(OrderInImplement.class); + private final com.wms.mapper.AppOrderInMapper appOrderInMapper; + + /** + * 查询入库单 + * @param request 查询参数 + * @return 返回结果 + */ + public WmsApiResponse> queryOrderIn(queryOrderInRequest request) { + if(request.getOrderStatus() == null || request.getOrderStatus().isEmpty()) { + return new WmsApiResponse<>(0, "查询成功", new ArrayList<>()); // 没有查询参数,返回空 + } + List appOrderIns = appOrderInMapper.selectWithParams(request.getSearchStr(), request.getOrderStatus()); + return new WmsApiResponse<>(0, "查询成功", appOrderIns); + } + + + + /** + * 添加入库单 + * @param request 入库单参数 + * @return 返回结果 + */ + public WmsApiResponse addOrderIn(downOrderInRequest request){ + if (Objects.equals(request.efSelect, "G")){ + log.info("托盘{}为空托盘入库", request.vehicleNo); + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(UUID.randomUUID().toString()); + appOrderIn.setGuid(UUID.randomUUID().toString()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(null); + appOrderIn.setVehicleNo(request.vehicleNo); + appOrderIn.setGoodsId(null); + appOrderIn.setGoodsNum(null); + appOrderIn.setWareHouse(request.abcSelect); + appOrderIn.setOrderStatus(0); + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("WMS"); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setRemark("空托盘入库"); + //appOrderIn.setProductionDate(request.abcSelect); + appOrderInMapper.insert(appOrderIn); + return new WmsApiResponse<>(0, "添加成功", appOrderIn); + }else{ + AppOrderIn selectOrderIn = new AppOrderIn(); + selectOrderIn.setRemark("空托盘入库"); + selectOrderIn.setVehicleNo(request.vehicleNo); + List selEmpty = appOrderInMapper.select(selectOrderIn); + if (selEmpty == null || selEmpty.isEmpty()){ + if (request.goodsNum <= 0){ + return new WmsApiResponse<>(1, "数量必须大于0", null); + } + /* 插入数据,插入记录表 */ + //OrderOut orderOutList = new OrderOut(); + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(UUID.randomUUID().toString()); + appOrderIn.setGuid(UUID.randomUUID().toString()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(null); + appOrderIn.setVehicleNo(request.vehicleNo); + appOrderIn.setGoodsId(request.goodsId); + appOrderIn.setGoodsNum(BigDecimal.valueOf(request.goodsNum)); + appOrderIn.setWareHouse(request.abcSelect); + if (Objects.equals(request.efSelect, "E")){ + appOrderIn.setOrderStatus(0); + }else { + appOrderIn.setOrderStatus(2); + } + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("WMS"); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setRemark(""); + //appOrderIn.setProductionDate(request.abcSelect); + appOrderInMapper.insert(appOrderIn); + return new WmsApiResponse<>(0, "添加成功", appOrderIn); + }else { + return new WmsApiResponse<>(1, "必须先删除空托盘入库任务!", null); + } + + } + + } + + /** + * 修改数量 + * @param request 修改数量参数 + * @return 返回结果 + */ + public WmsApiResponse updateForNum(updateNumRequest request){ +// if (request.get){ +// +// } + + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(request.getRowId()); + List appOrderIns = appOrderInMapper.select(appOrderIn); + if (appOrderIns.get(0).getGoodsId() == null || appOrderIns.get(0).getGoodsId().isEmpty()){ + return new WmsApiResponse<>(999, "空托盘不允许修改物料数量,修改失败", null); + } + appOrderIn.setGoodsNum(request.getRealNum()); + int i = appOrderInMapper.update(appOrderIn); + if(i > 0) { + return new WmsApiResponse<>(0, "修改成功", null); + }else { + return new WmsApiResponse<>(999, "修改失败", null); + } + } + + /** + * 绑定载具 + * @param request 绑定参数 + * @return 返回结果 + */ + public WmsApiResponse bindingVehicle(bindingVehicleRequest request) { + String vehicleNo = request.getVehicleNo(); + String code = request.getCode(); + if(StringUtils.isEmpty(vehicleNo) || StringUtils.isEmpty(code)) { + return new WmsApiResponse<>(999, "载具号或者条码为空", null); + } + // 拆分条码 + // 前八位是零件号,后面六位是批次,后面一位是班次,最后五位是数量 + if(code.length() == 22) { + //return new WmsApiResponse<>(999, "条码长度错误", null); + String goodsId = code.substring(0, 10); // 物料编码 + String productionDate = code.substring(10, 16); //生产日期 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); + Date date; + try { + // 将字符串解析成Date对象 + date = dateFormat.parse(productionDate); + } catch (ParseException e) { + throw new RuntimeException(e); + } + String batchNo = code.substring(0, 16); // 批次 ---- 这个批次应该是料号加中间六位 + String shift = code.substring(17, 18); // 班次 + String goodsNumStr = code.substring(18, 22); // 数量字符串 + if(!goodsNumStr.matches("[0-9]+")) { + return new WmsApiResponse<>(999, "数量错误", null); + } + BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量 + List selectRows = appOrderInMapper.select(new AppOrderIn(batchNo, goodsNum, OrderInStatusEnum.CREATE.getCode())); + if(selectRows == null || selectRows.isEmpty()) { + return new WmsApiResponse<>(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null); + } + AppOrderIn orderIn = selectRows.get(0); // 这条数据 + // 绑定载具 + AppOrderIn bindingOrderIn = new AppOrderIn(); + bindingOrderIn.setRowId(orderIn.getRowId()); + bindingOrderIn.setVehicleNo(vehicleNo); + bindingOrderIn.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); + bindingOrderIn.setUpdateTime(java.time.LocalDateTime.now()); + //bindingOrderIn.setProductionDate(date); + //bindingOrderIn.setUpdateTime(date); + if(appOrderInMapper.update(bindingOrderIn) > 0) { + return new WmsApiResponse<>(0, "绑定成功", null); + } + return new WmsApiResponse<>(999, "绑定失败,未知异常,请重试", null); + } else if (code.length() == 20) { + //String goodsId = code.substring(0, 10); // 物料编码 + String productionDate = code.substring(8, 14); //生产日期 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); + Date date; + try { + // 将字符串解析成Date对象 + date = dateFormat.parse(productionDate); + } catch (ParseException e) { + throw new RuntimeException(e); + } + String batchNo = code.substring(0, 14); // 批次 ---- 这个批次应该是料号加中间六位 + //String shift = code.substring(17, 18); // 班次 + String goodsNumStr = code.substring(16, 20); // 数量字符串 + if(!goodsNumStr.matches("[0-9]+")) { + return new WmsApiResponse<>(999, "数量错误", null); + } + BigDecimal goodsNum = new BigDecimal(goodsNumStr); // 数量 + List selectRows = appOrderInMapper.select(new AppOrderIn(batchNo, goodsNum, OrderInStatusEnum.CREATE.getCode())); + if(selectRows == null || selectRows.isEmpty()) { + return new WmsApiResponse<>(999, String.format("条码找不到入库单,无法绑定,条码:%s, 批次: %s, 数量: %s", code, batchNo, goodsNum), null); + } + AppOrderIn orderIn = selectRows.get(0); // 这条数据 + // 绑定载具 + AppOrderIn bindingOrderIn = new AppOrderIn(); + bindingOrderIn.setRowId(orderIn.getRowId()); + bindingOrderIn.setVehicleNo(vehicleNo); + bindingOrderIn.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); + bindingOrderIn.setUpdateTime(java.time.LocalDateTime.now()); + //bindingOrderIn.setProductionDate(date); + //bindingOrderIn.setUpdateTime(date); + if(appOrderInMapper.update(bindingOrderIn) > 0) { + return new WmsApiResponse<>(0, "绑定成功", null); + } + return new WmsApiResponse<>(999, "绑定失败,未知异常,请重试", null); + } + + return new WmsApiResponse<>(999, "条码长度错误", null); + } + + + + + /** + * 根据载具号查询入库单 + * @param vehicleNo 载具号 + * @return 返回结果 + */ + public WmsApiResponse> getOrderInWithVehicleNo(String vehicleNo) { + if(vehicleNo == null || vehicleNo.isEmpty()) { + return new WmsApiResponse<>(999, "载具号不能为空", null); + } + AppOrderIn appOrderInQuery = new AppOrderIn(); + appOrderInQuery.setVehicleNo(vehicleNo); + appOrderInQuery.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); + List appOrderIns = appOrderInMapper.select(appOrderInQuery); + if(appOrderIns == null) { + return new WmsApiResponse<>(999, "查询失败,请重试", new ArrayList<>()); + } + return new WmsApiResponse<>(0, "查询成功", appOrderIns); + } + + /** + * 解绑载具 + * @param rowId 入库单行号 + * @return 返回结果 + */ + public WmsApiResponse unBindingVehicle(String rowId) { + if(rowId == null || rowId.isEmpty()) { + return new WmsApiResponse<>(999, "入库单行号不能为空", null); + } + AppOrderIn unBindingVehicle = new AppOrderIn(); + unBindingVehicle.setRowId(rowId); + unBindingVehicle.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); + unBindingVehicle.setVehicleNo(""); + unBindingVehicle.setUpdateTime(java.time.LocalDateTime.now()); + int updateResult = appOrderInMapper.update(unBindingVehicle); + if(updateResult > 0) { + return new WmsApiResponse<>(0, "解绑成功", null); + } + return new WmsApiResponse<>(999, "解绑失败,请重试", null); + } + + public WmsApiResponse deleteOrderIn(String rowId) { + try { + // 确保 orderId 不为空 + if (rowId == null) { + return new WmsApiResponse<>(1, "执行失败,参数错误", null); + } + // 调用 Mapper 方法执行删除操作 + int deletedResult = appOrderInMapper.delete(rowId); + // 检查删除是否成功 + if (deletedResult > 0) { + return new WmsApiResponse<>(0, "删除成功", true); + } else { + return new WmsApiResponse<>(1, "订单不存在", false); + } + } catch (Exception e) { + // 记录异常 + return new WmsApiResponse<>(1, "删除失败", false); + } + } + +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java new file mode 100644 index 0000000..384a287 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java @@ -0,0 +1,337 @@ +package com.wms.service.serviceImplements; + +import com.wms.constants.enums.LocationStatus; +import com.wms.constants.enums.OrderOutStatusEnum; +import com.wms.constants.enums.StockStatus; +import com.wms.entity.common.WmsApiResponse; +import com.wms.entity.dto.orderOut.handOrderOutRequest; +import com.wms.entity.dto.orderOut.queryOrderOutRequest; +import com.wms.entity.table.*; +import com.wms.mapper.LocationMapper; +import com.wms.mapper.OrderOutMapper; +import com.wms.mapper.StockMapper; +import com.wms.mapper.VehicleMapper; +import com.wms.service.IOrderOutService; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.util.*; + +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class OrderOutImplements implements IOrderOutService { + + + private static final Logger log = LoggerFactory.getLogger(OrderOutImplements.class); + private final OrderOutMapper orderOutMapper; + + private final StockMapper stockMapper; + + private final LocationMapper locationMapper; + + private final com.wms.mapper.TaskMapper taskMapper; + + private final VehicleMapper vehicleMapper; + + /** + * 查询出库单 + * @param request 请求参数 + * @return 结果 + */ + public WmsApiResponse> queryOrderOut(queryOrderOutRequest request){ + if(request.getOrderStatus() == null || request.getOrderStatus().isEmpty()) { + return new WmsApiResponse<>(0, "查询成功", new ArrayList<>()); // 没有查询参数,返回空 + } + List orderOuts = orderOutMapper.queryWithParams(request.getSearchStr(), request.getOrderStatus()); + return new WmsApiResponse<>(0, "查询成功", orderOuts); + } +// +// /** +// * 执行库存出库 +// * @param rowId 出库单ID +// * @return 结果 +// */ +// public WmsApiResponse outRowStock(String rowId) { +// if(rowId == null || rowId.isEmpty()) { +// return new WmsApiResponse<>(1, "执行失败,参数错误", null); +// } +// } + + /** + * 执行出库单 + * @param rowId 出库单ID + * @return 结果 + */ + public WmsApiResponse executeOrderOut(String rowId) { + if(rowId == null || rowId.isEmpty()) { + return new WmsApiResponse<>(1, "执行失败,参数错误", null); + } + List queryResult = orderOutMapper.queryWithRowId(rowId); + if(queryResult == null) { + return new WmsApiResponse<>(1, "执行失败,请重试", null); + } + if(queryResult.isEmpty()) { + return new WmsApiResponse<>(1, "执行失败,该任务不存在,请刷新后再试", null); + } + OrderOut orderOut = queryResult.get(0); // 出库单数据 + + // 计算出库 + List outTasks = new ArrayList<>(); // 出库任务列表 + /* 查询库存 */ + // 拉出该物料的所有库存 + if(Objects.equals(orderOut.getRemark(), "手动出库")){ + Stock queryStock = new Stock(); + //queryStock.setGoodsId(orderOut.getGoodsId()); + queryStock.setGoodsId(orderOut.getGoodsId() != null ? orderOut.getGoodsId().trim() : null); + queryStock.setWarehouseName(orderOut.getWarehouseOrigin()); + queryStock.setStockStatus(StockStatus.OK.getCode()); + if (orderOut.getDeliveryTime() != null){ + queryStock.setProductionDate(orderOut.getDeliveryTime()); + } + List stockList = stockMapper.selStocks(queryStock); + if(stockList == null) { + return new WmsApiResponse<>(1, String.format("库存拉取失败,请稍后再试,物料号:%s", orderOut.getGoodsId()), null); + } + if(stockList.isEmpty()) { + return new WmsApiResponse<>(1, String.format("该物料没有库存,物料号:%s,其他物料也一并拒绝出库", orderOut.getGoodsId()), null); + } + Integer availableNum = com.wms.utils.storage.StockUtils.sumStcokAvailableNum(stockList); // 拥有的数量 + int needNum = Integer.parseInt(orderOut.getGoodsNum()); // 需要的数量 + if(availableNum.compareTo(needNum) < 0) { + return new WmsApiResponse<>(1, String.format("该物料库存不足,物料号:%s,库存数量:%d,出库数量:%s", orderOut.getGoodsId(), availableNum, orderOut.getGoodsNum()), null); + } + // 手动出库的生成出库任务 + + for(Stock outStock : stockList) { + if(needNum <= 0) { + break; + } + // 生成出库任务,更新库存为出库中 + int outNum = needNum > outStock.getAvailableNum() ? outStock.getAvailableNum() : needNum; // 需要操作的数量 + if(outTasks.stream().filter(task -> task.getOrigin().equals(outStock.getLocationId())).toList().isEmpty()) { + Task task = new Task(); + task.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + task.setTaskType(2); + task.setTaskGroup(orderOut.getOrderId()); + task.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); + task.setOrigin(outStock.getLocationId()); + task.setDestination("111"); + task.setPickStand(orderOut.getRowId()); + task.setWeight(0.0); + task.setVehicleNo(outStock.getVehicleId()); + task.setCreateTime(new Date()); + task.setUserName("WMS"); + task.setGoodsId(outStock.getGoodsId()); + task.setGoodsName(outStock.getGoodsName()); + task.setOperateNum(outNum); + task.setTotalNum(outStock.getRealNum()); + task.setTaskPriority(1); + task.setRemark1("手动出库"); + outTasks.add(task); + } + // 把这条库存记录可用数量更新为 0 + stockMapper.updateStockAvailableNumWithStockId(outStock.getStockId(), outStock.getAvailableNum()-outNum); + // 更新库存为出库中 + stockMapper.updateStockStatusWithLocationId(outStock.getLocationId(), StockStatus.OUT.getCode()); + // 重新计算需求数量 + needNum -= outNum; + } + } else if (Objects.equals(orderOut.getRemark(), "空托盘出库")) { + //先判断这个托盘到底是不是空托盘 + Stock queryStock = new Stock(); + queryStock.setVehicleId(orderOut.getWarehouseDestination()); + List s = stockMapper.selStocks(queryStock); + if (s == null || s.isEmpty()){ + Location outLocation = new Location(); + outLocation.setVehicleId(orderOut.getWarehouseDestination()); + List locations = locationMapper.selLocations(outLocation); + if (locations.isEmpty()){ + return new WmsApiResponse<>(1, "没有找到该托盘对应的库位,请检查库位是否正确", null); + } + Task task = new Task(); + task.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + task.setTaskType(2); + task.setTaskGroup(orderOut.getOrderId()); + task.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); + task.setOrigin(locations.get(0).getLocationId()); + task.setDestination("111"); + task.setPickStand(orderOut.getRowId()); + task.setWeight(0.0); + task.setVehicleNo(orderOut.getWarehouseDestination()); + task.setCreateTime(new Date()); + task.setUserName("WMS"); + task.setGoodsId(null); + task.setGoodsName(null); + task.setOperateNum(null); + task.setTotalNum(null); + task.setTaskPriority(1); + task.setRemark1("空托盘出库"); + outTasks.add(task); + }else { + return new WmsApiResponse<>(1, "该托盘不是空托盘,请检查", null); + } + + } + if(outTasks.isEmpty()) { + return new WmsApiResponse<>(1, "无法生成任务,请稍后再试", null); + } + int addResult = taskMapper.addTasks(outTasks); + if(addResult == outTasks.size()) { +// //删除出库单对应的任务 +// int deleteResult =orderOutMapper.deleteOrderOut(orderOut.getRowId()); +// if (deleteResult > 0){ +// log.info("添加任务成功,删除出库单成功,任务:{}", outTasks); +// } + //更改出库单状态为出库中 + OrderOut orderOutUpdateStatus = new OrderOut(); + orderOutUpdateStatus.setRowId(rowId); + orderOutUpdateStatus.setStatus(OrderOutStatusEnum.RUNNING.getCode()); + int a = orderOutMapper.update(orderOutUpdateStatus); + if (a > 0){ + log.info("更新出库单状态成功"); + }else { + log.info("更新出库单状态失败"); + } + return new WmsApiResponse<>(0, "添加成功", null); + } + return new WmsApiResponse<>(1, "添加失败,请重试", null); + } + + + public boolean createEmptyLocation(handOrderOutRequest request){ + Location occupyLocation = new Location(); + occupyLocation.setLocationId(request.location); + occupyLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + occupyLocation.setVehicleId(request.vehicleNo); + int x = locationMapper.modifyLocation(occupyLocation); + if (x == 0){ + log.error("四向车空托盘入库完成更新库位表失败"); + return false; + }else{ + log.info("四向车空托盘入库完成更新库位表成功"); + + } + Vehicle a = new Vehicle(); + a.setVehicleId(request.vehicleNo); + a.setCurrentLocation(request.location); + a.setIsEmpty(1); + a.setVehicleStatus(2); + int b = vehicleMapper.addVehicle(a); + if (b == 0){ + log.error("四向车空托盘入库完成更新料箱监控失败"); + return false; + }else{ + log.info("四向车空托盘入库完成更新料箱监控成功"); + + } + return true; + } + public WmsApiResponse updateLocation(handOrderOutRequest request){ + Vehicle vehicle = new Vehicle(); + vehicle.setVehicleStatus(2); + vehicle.setIsEmpty(1); + List userList = vehicleMapper.selVehicles(vehicle); + for (Vehicle user : userList){ + Location location = new Location(); + location.setLocationStatus(1); + location.setVehicleId(user.getVehicleId()); + location.setLocationId(user.getCurrentLocation()); + int x = locationMapper.modifyLocation(location); + if (x == 0){ + log.error("四向车更新库位表失败"); + return new WmsApiResponse<>(1, "四向车更新库位表失败", null); + }else{ + log.info("四向车更新库位表成功"); + + } + } + return null; + } + /** + * 创建出库单 + */ + public WmsApiResponse createOrderOut(handOrderOutRequest request) { + if (request.vehicleNo == null || request.vehicleNo.isEmpty()){ + //正常出库 + if (request.goodsId == null|| request.goodsId.isEmpty()){ + return new WmsApiResponse<>(1, "物料号不能为空", null); + } + if (request.goodsNum <= 0){ + return new WmsApiResponse<>(1, "数量必须大于0", null); + } + /* 插入数据,插入记录表 */ + //OrderOut orderOutList = new OrderOut(); + OrderOut orderOut = new OrderOut(); + orderOut.setRowId(UUID.randomUUID().toString()); + orderOut.setRecordId(UUID.randomUUID().toString()); + orderOut.setOrderId(UUID.randomUUID().toString()); + orderOut.setWarehouseOrigin("四向车立体库"); + orderOut.setWarehouseDestination(""); + orderOut.setOrderType(1); + orderOut.setRowNo(1); + orderOut.setGoodsId(request.goodsId); + orderOut.setGoodsNum(String.valueOf(request.goodsNum)); + orderOut.setUnit(""); + orderOut.setStatus(OrderOutStatusEnum.CREATED.getCode()); + orderOut.setCreateTime(new Timestamp(System.currentTimeMillis())); + orderOut.setRemark("手动出库"); + orderOut.setBatchNo(null); + orderOutMapper.insert(orderOut); + return new WmsApiResponse<>(0, "添加成功", orderOut); + }else{ + //空托盘出库 + /* 插入数据,插入记录表 */ + //OrderOut orderOutList = new OrderOut(); + OrderOut orderOut = new OrderOut(); + orderOut.setRowId(UUID.randomUUID().toString()); + orderOut.setRecordId(UUID.randomUUID().toString()); + orderOut.setOrderId(UUID.randomUUID().toString()); + orderOut.setWarehouseOrigin("四向车立体库"); + orderOut.setWarehouseDestination(request.vehicleNo); //借用这个字段表示载具号 + orderOut.setOrderType(1); + orderOut.setRowNo(1); + orderOut.setGoodsId(request.goodsId); + orderOut.setGoodsNum(String.valueOf(request.goodsNum)); + //Integer.parseInt(row.getQty()) + orderOut.setUnit(""); + orderOut.setStatus(OrderOutStatusEnum.CREATED.getCode()); + orderOut.setCreateTime(new Timestamp(System.currentTimeMillis())); + orderOut.setRemark("空托盘出库"); + orderOut.setBatchNo(null); + orderOutMapper.insert(orderOut); + return new WmsApiResponse<>(0, "添加成功", orderOut); + } + + } + + + /** + * 删除出库单 + * @param rowId 出库单ID + * @return 结果 + */ + public WmsApiResponse deleteOrderOut(String rowId) { + try { + // 确保 orderId 不为空 + if (rowId == null) { + return new WmsApiResponse<>(1, "执行失败,参数错误", null); + } + // 调用 Mapper 方法执行删除操作 + int deletedResult = orderOutMapper.deleteOrderOut(rowId); + // 检查删除是否成功 + if (deletedResult > 0) { + return new WmsApiResponse<>(0, "删除成功", true); + } else { + return new WmsApiResponse<>(1, "订单不存在", false); + } + } catch (Exception e) { + // 记录异常 + return new WmsApiResponse<>(1, "删除失败", false); + } + + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/PartInfoServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/PartInfoServiceImplements.java new file mode 100644 index 0000000..77e1ac8 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/PartInfoServiceImplements.java @@ -0,0 +1,40 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.PartInfo; +import com.wms.mapper.PartInfoMapper; +import com.wms.service.PartInfoService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class PartInfoServiceImplements implements PartInfoService { + private final PartInfoMapper partInfoMapper; + @Override + public List selParts(PartInfo partInfo) { + return partInfoMapper.selParts(partInfo); + } + + @Override + public PartInfo selPartByPartNo(String material) { + return partInfoMapper.selPartByPartNo(material); + } + + @Override + public int addPart(PartInfo partInfo) { + return partInfoMapper.addPart(partInfo); + } + + @Override + public int modifyPart(PartInfo partInfo) { + return partInfoMapper.modifyPart(partInfo); + } + + @Override + public int deletePartByPartNo(String material) { + return partInfoMapper.deletePartByPartNo(material); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/StandServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/StandServiceImplements.java new file mode 100644 index 0000000..effa96f --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/StandServiceImplements.java @@ -0,0 +1,45 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Stand; +import com.wms.mapper.StandMapper; +import com.wms.service.StandService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class StandServiceImplements implements StandService { + + private final StandMapper standMapper; + + @Autowired + public StandServiceImplements(StandMapper standMapper) { + this.standMapper = standMapper; + } + + @Override + public List selStands(Stand stand) { + return this.standMapper.selStands(stand); + } + + @Override + public Stand selStandById(String standId) { + return this.standMapper.selStandById(standId); + } + + @Override + public int addStand(Stand stand) { + return this.standMapper.addStand(stand); + } + + @Override + public int modifyStand(Stand stand) { + return this.standMapper.modifyStand(stand); + } + + @Override + public int deleteStand(Stand stand) { + return this.standMapper.deleteStand(stand); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/StockServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/StockServiceImplements.java new file mode 100644 index 0000000..c1d6688 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/StockServiceImplements.java @@ -0,0 +1,67 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Stock; +import com.wms.mapper.StockMapper; +import com.wms.service.StockService; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class StockServiceImplements implements StockService { + + private final StockMapper stockMapper; + + @Override + public List selStocks(Stock stock) { + return this.stockMapper.selStocks(stock); + } + + @Override + public List selStocksFront(String query) { + return stockMapper.selStocksFront(query); + } + + @Override + public int addStock(Stock stock) { + return this.stockMapper.addStock(stock); + } + + @Override + public int modifyStock(Stock stock) { + return this.stockMapper.modifyStock(stock); + } + + @Override + public int deleteStock(String stockId) { + return this.stockMapper.deleteStock(stockId); + } + + @Override + public List selStocksByGoodsId(Stock stock) { + return stockMapper.selStocksByGoodsId(stock); + } + + @Override + public List selStockOutOfDate() { + return stockMapper.selStockOutOfDate(); + } + + @Override + public List selStockNearDeadLine(int nearInterval) { + return stockMapper.selStockNearDeadLine(nearInterval); + } + + @Override + public List selStockLongTimeNoUse(int nearInterval) { + return stockMapper.selStockLongTimeNoUse(nearInterval); + } + + @Override + public int resetStock(Stock stock) { + return stockMapper.resetStock(stock); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/TaskRecordServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/TaskRecordServiceImplements.java new file mode 100644 index 0000000..7fe4718 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/TaskRecordServiceImplements.java @@ -0,0 +1,45 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Task; +import com.wms.mapper.TaskRecordMapper; +import com.wms.service.TaskRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TaskRecordServiceImplements implements TaskRecordService { + + private final TaskRecordMapper taskRecordMapper; + + @Autowired + public TaskRecordServiceImplements(TaskRecordMapper taskRecordMapper) { + this.taskRecordMapper = taskRecordMapper; + } + + @Override + public List selTasks(Task taskRecord) { + return taskRecordMapper.selTasks(taskRecord); + } + + @Override + public int addTask(Task taskRecord) { + return taskRecordMapper.addTask(taskRecord); + } + + @Override + public int executeTask(Task taskRecord) { + return taskRecordMapper.executeTask(taskRecord); + } + + @Override + public int deleteTask(String taskId) { + return taskRecordMapper.deleteTask(taskId); + } + + @Override + public int deleteTaskRecordRegularly() { + return taskRecordMapper.deleteTaskRecordRegularly(); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java new file mode 100644 index 0000000..e9b20b1 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java @@ -0,0 +1,45 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Task; +import com.wms.mapper.TaskMapper; +import com.wms.service.TaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TaskServiceImplements implements TaskService { + + private final TaskMapper taskMapper; + + @Autowired + public TaskServiceImplements(TaskMapper taskMapper) { + this.taskMapper = taskMapper; + } + + @Override + public List selTasks(Task task) { + return taskMapper.selTasks(task); + } + + @Override + public int addTask(Task task) { + return taskMapper.addTask(task); + } + + @Override + public List selTasksByTaskId(Task task) { + return taskMapper.selTasksByTaskId(task); + } + + @Override + public int executeTask(Task task) { + return taskMapper.executeTask(task); + } + + @Override + public int deleteTask(String taskId) { + return taskMapper.deleteTask(taskId); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/UserServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/UserServiceImplements.java new file mode 100644 index 0000000..c601321 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/UserServiceImplements.java @@ -0,0 +1,24 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.User; +import com.wms.mapper.UserMapper; +import com.wms.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserServiceImplements implements UserService { + + private final UserMapper userMapper; + @Autowired + public UserServiceImplements(UserMapper userMapper) { + this.userMapper = userMapper; + } + + @Override + public List selectUsers(User user) { + return userMapper.selectUsers(user); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/VehicleServiceImplements.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/VehicleServiceImplements.java new file mode 100644 index 0000000..4987863 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/VehicleServiceImplements.java @@ -0,0 +1,43 @@ +package com.wms.service.serviceImplements; + +import com.wms.entity.table.Vehicle; +import com.wms.mapper.VehicleMapper; +import com.wms.service.VehicleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class VehicleServiceImplements implements VehicleService { + private final VehicleMapper vehicleMapper; + + @Autowired + public VehicleServiceImplements(VehicleMapper vehicleMapper) { + this.vehicleMapper = vehicleMapper; + } + @Override + public List selVehicles(Vehicle vehicle) { + return vehicleMapper.selVehicles(vehicle); + } + + @Override + public Vehicle selVehicleById(String vehicleId) { + return vehicleMapper.selVehicleById(vehicleId); + } + + @Override + public int addVehicle(Vehicle vehicle) { + return vehicleMapper.addVehicle(vehicle); + } + + @Override + public int modifyVehicle(Vehicle vehicle) { + return vehicleMapper.modifyVehicle(vehicle); + } + + @Override + public int deleteVehicle(Vehicle vehicle) { + return vehicleMapper.deleteVehicle(vehicle); + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java new file mode 100644 index 0000000..771bd04 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java @@ -0,0 +1,196 @@ +package com.wms.service.serviceImplements.parent; + +import com.wms.bussiness.TaskOperation; +import com.wms.constants.enums.*; +import com.wms.entity.app.ResponseEntity; +import com.wms.entity.app.container.ContainerApiLocalResponse; +import com.wms.entity.app.container.CreateInstoreTaskRequest; +import com.wms.entity.app.container.CreateInstoreTaskResponse; +import com.wms.entity.app.container.TaskStateNoticeRequest; +import com.wms.entity.table.AppOrderIn; +import com.wms.entity.table.Location; +import com.wms.entity.table.Stock; +import com.wms.entity.table.Task; +import com.wms.mapper.AppOrderInMapper; +import com.wms.mapper.LocationMapper; +import com.wms.mapper.StockMapper; +import com.wms.mapper.TaskMapper; +import com.wms.service.ContainerService; +import com.wms.utils.StringUtils; +import com.wms.utils.storage.LocationUtils; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.wms.utils.WmsUtils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +/** + * 四向车 api service 的实现 + */ +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class ContainerImplement implements ContainerService { + + + private static final Logger log = LoggerFactory.getLogger(ContainerImplement.class); + /** + * 库存 Mapper + */ + private final StockMapper stockMapper; + + /** + * 库位操作类 + */ + private final LocationUtils locationUtils; + + /** + * 任务表操作类 + */ + private final TaskMapper taskMapper; + + /** + * 库位 Mapper + */ + private final LocationMapper locationMapper; + + /** + * 任务操作类 + */ + private final TaskOperation taskOperation; + + /** + * 订单入库 Mapper + */ + private final com.wms.mapper.AppOrderInMapper appOrderInMapper; + + /** + * 接收四向车请求扫码入库 + * @param request 请求信息 + * @return 响应信息 + */ + @Override + public CreateInstoreTaskResponse createInstoreTask(CreateInstoreTaskRequest request) { + //进行MD5加密的验证 + String md5 = StringUtils.containerMd5(request.getRequestId()); + if(!md5.equals(request.getKey())) { + return new CreateInstoreTaskResponse("400", "请求失败,密钥校验未通过"); + } + // 查询待入库的批次号 + AppOrderIn waitInStockQuery = new AppOrderIn(); + waitInStockQuery.setVehicleNo(request.getPalletNo()); + //waitInStockQuery.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); + List waitInStockList = appOrderInMapper.select(waitInStockQuery); // 查找待入库的批次号 + if(waitInStockList.isEmpty()) { + return new CreateInstoreTaskResponse("400", String.format("条码:%s 不存在待入库的任务", request.getPalletNo())); + } + AppOrderIn appOrderIn = waitInStockList.get(0); + /* 查找可用库位 */ + List canUseLocations = locationUtils.getNewLocation(2,appOrderIn); + if(canUseLocations.isEmpty()){ + return new CreateInstoreTaskResponse("400", "没有可用库位"); + } + Location useLocation = locationUtils.checkCanUse(canUseLocations); + if(useLocation == null) { + return new CreateInstoreTaskResponse("400", "暂没有可以直接使用的库位,因为存在互锁的库位,请等待当前任务都执行完成后再试"); + } + /* 找到可用的库位 */ /* 生成任务(生成的任务直接运行中,因为此处会把任务直接回回去),更新库存表内状态为入库中 */ + // 新建任务 插入任务表 + Task newInTask = new Task(); + newInTask.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + newInTask.setTaskGroup(UUID.randomUUID().toString()); + newInTask.setTaskType(TaskType.IN.getCode()); + newInTask.setTaskStatus(WmsTaskStatus.WAIT.getCode()); // 因为任务是直接返回去的,所以直接是已下发状态 + newInTask.setOrigin(request.getFromCellNo()); + newInTask.setDestination(useLocation.getLocationId()); + //newInTask.setGoodsId(String.format("%s 等 %d 个物料", waitInStockList.get(0).getGoodsId(), waitInStockList.size())); + if (!waitInStockList.isEmpty() && waitInStockList.get(0) != null) { + newInTask.setGoodsId(waitInStockList.get(0).getGoodsId()); + } else { + newInTask.setGoodsId(null); // 或者你可以选择不设置 + } + newInTask.setWeight(Double.valueOf(request.getWeight())); + newInTask.setCreateTime(new java.util.Date()); + newInTask.setUserName("四向车API"); + newInTask.setVehicleSize(Integer.valueOf(request.getHeight())); + newInTask.setVehicleNo(request.getPalletNo()); + newInTask.setTaskPriority(1); + newInTask.setProductionDate(null); + int insertTaskResult = taskMapper.addTask(newInTask); // 添加入库任务 + if(insertTaskResult < 1) { + return new CreateInstoreTaskResponse("400", "生成任务失败,无法插入新的入库任务"); + } + // 更新库存中的待入库记录为入库中,并将库位更新进去 + for(AppOrderIn waitInStock : waitInStockList) { + AppOrderIn updateAppOrderIn = new AppOrderIn(); + updateAppOrderIn.setRowId(waitInStock.getRowId()); + updateAppOrderIn.setOrderStatus(OrderInStatusEnum.IN.getCode()); + updateAppOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderInMapper.update(updateAppOrderIn); + } + // 占用库位 + Location location = new Location(); + location.setLocationId(useLocation.getLocationId()); + location.setLocationStatus(LocationStatus.OCCUPY.getCode()); + location.setVehicleId(request.getPalletNo()); + locationMapper.modifyLocation(location); + + CreateInstoreTaskResponse success = new CreateInstoreTaskResponse(); + success.setCode("200"); + success.setMessage("生成入库任务成功"); + success.setWmsTaskId(newInTask.getTaskId()); + success.setPalletNo(request.getPalletNo()); + success.setFromCellNo(request.getFromCellNo()); + success.setToCellNo(useLocation.getLocationId()); + return success; + } + + /** + * 接收四向车任务状态通知 + * @param request 请求信息 + * @return 响应信息 + */ + @Override + public ContainerApiLocalResponse taskStateNotice(TaskStateNoticeRequest request) { + String md5 = StringUtils.containerMd5(request.getRequestId()); + if(!md5.equals(request.getKey())) { + return new ContainerApiLocalResponse("400", "请求失败,密钥校验未通过"); + } + /* 查找出相关任务 */ + Task queryTask = new Task(); + queryTask.setTaskId(request.getWmsTaskId()); + List taskList = taskMapper.selTasks(queryTask); + if(taskList == null) { + return new ContainerApiLocalResponse("200", String.format("任务:%s 未找到任务,数据库查询失败", request.getWmsTaskId())); + } + if(taskList.isEmpty()) { + return new ContainerApiLocalResponse("200", String.format("任务:%s 不存在", request.getWmsTaskId())); + } + Task thisTask = taskList.get(0); + if(request.getTaskState().equals("20")) { // 任务完成 + boolean completeResult = taskOperation.completeTask(thisTask); + if(!completeResult) { + return new ContainerApiLocalResponse("200", String.format("任务:%s 完成事件异常,请重试", request.getWmsTaskId())); + } + return new ContainerApiLocalResponse("200", "任务完成"); + } + if(request.getTaskState().equals("21")) { // 任务取消 + boolean cancelResult = taskOperation.cancelTask(thisTask); + if(!cancelResult) { + return new ContainerApiLocalResponse("200", String.format("任务:%s 取消事件异常,请重试", request.getWmsTaskId())); + } + return new ContainerApiLocalResponse("200", "任务取消"); + } + return new ContainerApiLocalResponse("200", String.format("不支持的任务状态:%s", request.getTaskState())); + + + } +} diff --git a/wms_serve/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java b/wms_serve/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java new file mode 100644 index 0000000..3cf843d --- /dev/null +++ b/wms_serve/src/main/java/com/wms/service/serviceImplements/parent/MesServiceImplement.java @@ -0,0 +1,223 @@ +package com.wms.service.serviceImplements.parent; + +import com.wms.constants.enums.*; +import com.wms.entity.app.mes.CheckNoticeRequest; +import com.wms.entity.app.mes.MesApiLocalResponse; +import com.wms.entity.app.mes.OutNoticeRequest; +import com.wms.entity.app.mes.ReceiptInRequest; +import com.wms.entity.table.*; +import com.wms.mapper.*; +import com.wms.service.MesService; +import com.wms.utils.StringUtils; +import com.wms.utils.WmsUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.*; + +/** + * 上位系统交互 + * mes控制器的 Service 实现 + * @author icewint + */ +@Service +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class MesServiceImplement implements MesService { + + /** + * 入库单 Mapper + */ + private final AppOrderInMapper appOrderInMapper; + + /** + * 出库通知单 Mapper + */ + private final OrderOutMapper orderOutMapper; + + /** + * 盘点通知单 Mapper + */ + private final OrderCheckMapper orderCheckMapper; + + private final StockMapper stockMapper; + + private final TaskMapper taskMapper; + + + + /** + * mes 入库之前用此接口推送信息 + * @param request 请求信息 + * @return 返回信息 + */ + @Override + public MesApiLocalResponse receiptIn(ReceiptInRequest request) { + try{ + /* 校验入库单是否存在 */ + List checkIsExistListResult = appOrderInMapper.select(new AppOrderIn(request.getGuid())); + if(checkIsExistListResult == null) { + // 数据库查询失败 + return new MesApiLocalResponse(0, String.format("记录号校验失败,请重试,记录号:%s", request.getGuid())); + } + if(!checkIsExistListResult.isEmpty()) { + // 记录已经存在 + return new MesApiLocalResponse(0, String.format("该条记录已经存在,记录号:%s", request.getGuid())); + } + /* 添加信息进入入库单,标记为创建状态 */ + AppOrderIn orderIn = new AppOrderIn(); + orderIn.setRowId(UUID.randomUUID().toString()); + orderIn.setGuid(request.getGuid()); + orderIn.setInType(request.getType()); + orderIn.setBatchNo(request.getLosnr()); + orderIn.setVehicleNo(request.getVehicleNo()); + orderIn.setGoodsId(request.getItemCode()); + orderIn.setGoodsNum(new BigDecimal(request.getLotQty())); + orderIn.setWareHouse(request.getWarehouse()); +// if (Objects.equals(request.getWarehouse(), "100001")){ +// orderIn.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); +// } else if (Objects.equals(request.getWarehouse(), "300002")) { +// orderIn.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); +// } + orderIn.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); + orderIn.setCreateTime(LocalDateTime.now()); + orderIn.setCreatePerson("MES_API"); + orderIn.setUpdateTime(LocalDateTime.now()); + int addResult = appOrderInMapper.insert(orderIn); + if(addResult == 1) { + return new MesApiLocalResponse(1, "入库单添加成功"); + } + return new MesApiLocalResponse(0, "入库单添加失败"); + }catch (Exception e){ + return new MesApiLocalResponse(0, "入库单添加异常"); + } + } + + + /** + * mes 出库通知单 + * @param request 请求信息 + * @return 返回信息 + */ + @Override + public MesApiLocalResponse outNotice(OutNoticeRequest request) { + /* 检验记录是否存在 */ + try{ + OrderOut checkIsExist = new OrderOut(); + checkIsExist.setRecordId(request.getGuid()); + List checkIsExistListResult = orderOutMapper.query(checkIsExist); + if(!checkIsExistListResult.isEmpty()) { + return new MesApiLocalResponse(0, String.format("该条记录已经存在,记录号:%s", request.getGuid())); + } + /* 插入数据,插入记录表 */ + List orderOutList = new ArrayList<>(); + for(var row : request.getRow()) { + OrderOut orderOut = new OrderOut(); + orderOut.setRowId(UUID.randomUUID().toString()); + orderOut.setRecordId(request.getGuid()); + orderOut.setOrderId(request.getTransferNo()); + orderOut.setWarehouseOrigin(request.getFWarehouse()); + orderOut.setWarehouseDestination(request.getTWarehouse()); + orderOut.setOrderType(request.getType()); + orderOut.setDeliveryTime(StringUtils.toData(request.getRDate())); + orderOut.setRowNo(Integer.parseInt(row.getTransferLine())); + orderOut.setGoodsId(row.getItemCode()); + orderOut.setGoodsNum(row.getQty()); + //Integer.parseInt(row.getQty()) + orderOut.setUnit(row.getUnit()); + orderOut.setStatus(OrderOutStatusEnum.CREATED.getCode()); + orderOut.setCreateTime(new Timestamp(System.currentTimeMillis())); + orderOutList.add(orderOut); + } + if(orderOutList.isEmpty()) { + return new MesApiLocalResponse(0, "没有数据"); + } + int addOrderResult = orderOutMapper.insertList(orderOutList); + if(addOrderResult == orderOutList.size()) { + return new MesApiLocalResponse(1, "添加出库单成功"); + } + return new MesApiLocalResponse(0, "添加失败,请稍后再试"); + }catch (Exception e){ + return new MesApiLocalResponse(0, "添加失败,请稍后再试"); + } + } + + /** + * mes 盘点通知单 IF206 + * @param request 请求信息 + * @return 返回信息 + */ + @Override + public MesApiLocalResponse checkNotice(CheckNoticeRequest request) { + /* 检测这条记录存不存在 */ + try{ + OrderCheck checkIsExist = new OrderCheck(); + checkIsExist.setRecordId(request.getGuid()); + List checkIsExistListResult = orderCheckMapper.query(checkIsExist); + if(!checkIsExistListResult.isEmpty()) { + return new MesApiLocalResponse(0, String.format("该条记录已经存在,记录号:%s", request.getGuid())); + } + /* 添加盘点记录 */ + OrderCheck orderCheck = new OrderCheck(); + orderCheck.setRecordId(request.getGuid()); + orderCheck.setCheckId(request.getInventoryNo()); + orderCheck.setWarehouse(request.getIWarehouse()); + orderCheck.setStatus(OrderCheckStatusEnum.CREATED.getCode()); + orderCheck.setCreateTime(new Date()); + int insertOrderCheckResult = orderCheckMapper.insert(orderCheck); + if(insertOrderCheckResult > 0) { + return new MesApiLocalResponse(1, "添加成功"); + } + return new MesApiLocalResponse(0, "添加失败,请稍后再试"); + }catch (Exception e){ + return new MesApiLocalResponse(0, "添加异常,请稍后再试"); + } + + +// +// // 将该盘点单号对应的库别全部生成盘点任务 +// List checkTasks = new ArrayList<>(); // 盘点任务列表 +// Stock queryStock = new Stock(); +// queryStock.setWarehouseName(request.getIWarehouse()); +// List stockList = stockMapper.selStocks(queryStock); +// if(stockList == null || stockList.isEmpty()) { +// return new MesApiLocalResponse(0, String.format("该库别没有库存,请稍后再试,库别:%s", request.getIWarehouse())); +// } +// // 检查这些应该盘点的库位有没有任务在执行 +// for(Stock stock : stockList) { +// List notCompleteTasks = taskMapper.haveNotCompleteTask(stock.getLocationId()); +// if(notCompleteTasks == null) { +// return new MesApiLocalResponse(0, String.format("数据库校验任务失败,请稍后再试,库位:%s", stock.getLocationId())); +// } +// if(!notCompleteTasks.isEmpty()) { +// return new MesApiLocalResponse(0, String.format("该库位有任务在执行,请稍后再试,库位:%s", stock.getLocationId())); +// } +// Task task = new Task(); +// task.setTaskId(WmsUtils.generateUUIDString()); +// task.setTaskType(TaskType.INVENTORY.getCode()); +// task.setTaskStatus(OrderOutStatusEnum.CREATED.getCode()); +// task.setTaskGroup(request.getInventoryNo()); +// task.setOrigin(stock.getLocationId()); +// task.setDestination(""); +// task.setPickStand(""); +// task.setWeight(0.0); +// task.setVehicleNo(stock.getVehicleId()); +// task.setCreateTime(new Date()); +// task.setUserName("mes"); +// task.setGoodsId(stock.getGoodsId()); +// task.setGoodsName(stock.getGoodsName()); +// task.setOperateNum(stock.getRealNum()); +// task.setTotalNum(stock.getRealNum()); +// task.setTaskPriority(1); +// checkTasks.add(task); +// } +// int addTasks = taskMapper.addTasks(checkTasks); +// if(addTasks == checkTasks.size()) { +// return new MesApiLocalResponse(1, "添加成功"); +// } + + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/HttpUtils.java b/wms_serve/src/main/java/com/wms/utils/HttpUtils.java new file mode 100644 index 0000000..62fdc63 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/HttpUtils.java @@ -0,0 +1,227 @@ +package com.wms.utils; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.charset.Charset; +import java.util.Base64; +import java.util.Map; + +import jakarta.servlet.http.HttpServletRequest; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpEntity; +import org.apache.http.ParseException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; + +/** + * Http工具类 + */ +public class HttpUtils { + + /** + * 获取请求的ip地址 + * @param request 请求 + * @return ip地址 + */ + public static String getIpAddr(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + if (ip != null && ip.indexOf(",") > 0) { + String[] parts = ip.split(","); + for (String part : parts) { + if (!part.isEmpty() && !"unknown".equalsIgnoreCase(part)) { + ip = part.trim(); + break; + } + } + } + if ("0:0:0:0:0:0:0:1".equals(ip)) { + ip = "127.0.0.1"; + } + return ip; + } + + /** + * 发送HttpGet请求(无参数) + * @param url 地址 + * @return 响应结果 + */ + public static String sendHttpGet(String url) { + String result = ""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpGet httpget = new HttpGet(url); + response = httpClient.execute(httpget); + HttpEntity entity = null; + if (response != null) { + entity = response.getEntity(); + } + if (entity != null) { + result = EntityUtils.toString(entity); + } + } catch (ParseException | IOException e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return result; + } + + /** + * 发送HttpGet请求(带参数) + * @param url 地址 + * @param header 参数放在请求头里面 + * @return 响应结果 + */ + public static String sendHttpGet(String url, Map header) { + if (header == null) {// 没有参数 + return sendHttpGet(url); + } + String result = ""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpGet httpGet = new HttpGet(url); + // 设置超时时间 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(5000) + .setConnectionRequestTimeout(1000) + .setSocketTimeout(5000).build(); + httpGet.setConfig(requestConfig); + for(Map.Entry entry : header.entrySet()){ + + httpGet.setHeader(entry.getKey(), entry.getValue()); + } + response = httpClient.execute(httpGet); + HttpEntity entity = null; + if (response != null) { + entity = response.getEntity(); + } + if (entity != null) { + result = EntityUtils.toString(entity); + } + } catch (ParseException | IOException e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return result; + } + + /** + * 发送httpPost请求(不需要认证信息) + * @param url 目的地址 + * @param param 参数 + * @return 请求结果 + */ + public static String sendHttpPostWithoutToken(String url,String param) { + return sendHttpPost(url, param, null, null, null); + } + + /** + * 发送httpPost请求 + * @param url 目的地址 + * @param param 参数 + * @param token 认证信息 + * @param userName 登录账户 + * @param password 登录密码 + * @return 请求结果 + */ + public static String sendHttpPost(String url, String param, String token, String userName, String password) { + String data=""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(url); + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(5000) + .setConnectionRequestTimeout(1000) + .setSocketTimeout(5000).build(); + httppost.setConfig(requestConfig); + httppost.setHeader("Content-Type", "application/json;charset=UTF-8"); + if (StringUtils.isEmpty(token) && StringUtils.isNotEmpty(userName) && StringUtils.isNotEmpty(password)) { + httppost.setHeader("Authorization", "Basic " + Base64.getUrlEncoder().encodeToString((userName + ":" + password).getBytes())); + } else { + httppost.setHeader("Authorization", "Bearer " + token); + } + StringEntity se = new StringEntity(param, Charset.forName("UTF-8")); + se.setContentType("text/json"); + se.setContentEncoding("UTF-8"); + httppost.setEntity(se); + response = httpClient.execute(httppost); + data = EntityUtils.toString(response.getEntity(), "utf-8"); + EntityUtils.consume(response.getEntity()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return data; + } + + /** + * 发送httpPost请求 + * @param url 目的地址 + * @param param 参数 + * @param token 认证信息 + * @param userName 登录账户 + * @param password 登录密码 + * @return 请求结果 + */ + public static String sendHttpPostForm(String url, String param, String token, String userName, String password) { + + String data=""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(url); + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(5000) + .setConnectionRequestTimeout(1000) + .setSocketTimeout(5000).build(); + httppost.setConfig(requestConfig); + httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); + if (StringUtils.isEmpty(token) && StringUtils.isNotEmpty(userName) && StringUtils.isNotEmpty(password)) { + httppost.setHeader("Authorization", "Basic " + Base64.getUrlEncoder().encodeToString((userName + ":" + password).getBytes())); + } else { + httppost.setHeader("Authorization", "Bearer " + token); + } + StringEntity se = new StringEntity(param, Charset.forName("UTF-8")); + se.setContentType("application/x-www-form-urlencoded"); + se.setContentEncoding("UTF-8"); + httppost.setEntity(se); + response = httpClient.execute(httppost); + data = EntityUtils.toString(response.getEntity(), "utf-8"); + EntityUtils.consume(response.getEntity()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return data; + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/JWTUtils.java b/wms_serve/src/main/java/com/wms/utils/JWTUtils.java new file mode 100644 index 0000000..20363ad --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/JWTUtils.java @@ -0,0 +1,15 @@ +package com.wms.utils; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.interfaces.DecodedJWT; + +public class JWTUtils { + /** + * 解码token + * @param token token + * @return 结果 + */ + public static DecodedJWT decodeToken(String token) { + return JWT.decode(token); + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/MyPassword.java b/wms_serve/src/main/java/com/wms/utils/MyPassword.java new file mode 100644 index 0000000..ceb6ab3 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/MyPassword.java @@ -0,0 +1,113 @@ +package com.wms.utils; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; +import java.security.SecureRandom; + +/** + * Md5加密算法 + */ +public class MyPassword { + + // 密钥 + private static final String myPwd = "fdbk"; + + /** + * 加密 + * @param originalPassword + * @return + */ + public static String encrypt(String originalPassword) { + byte[] targetPassword; + try { + // 声明加密算法 + KeyGenerator kgen = KeyGenerator.getInstance("AES"); + SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + random.setSeed(myPwd.getBytes()); + kgen.init(128, random); + SecretKey secretKey = kgen.generateKey(); + byte[] enCodeFormat = secretKey.getEncoded(); + SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); + + // 创建密码器 + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, key); + byte[] byteContent = originalPassword.getBytes(); + targetPassword = cipher.doFinal(byteContent); + + } catch (Exception e) { + return null; + } + + return parseByte2HexStr(targetPassword); + } + + /** + * 解密 + * @param targetPassword + * @return + */ + public static String decrypt(String targetPassword) { + byte[] originalPassword; + byte[] content = parseHexStr2Byte(targetPassword); + try { + KeyGenerator kgen = KeyGenerator.getInstance("AES"); + SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + random.setSeed(myPwd.getBytes()); + kgen.init(128, random); + SecretKey secretKey = kgen.generateKey(); + byte[] enCodeFormat = secretKey.getEncoded(); + SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); + + // 创建密码器 + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, key); + originalPassword = cipher.doFinal(content); + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + return new String(originalPassword); + } + + /** + * 将二进制转换成十六进制 + * + * @param buf + * @return + */ + public static String parseByte2HexStr(byte buf[]) { + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < buf.length; i++) { + String hex = Integer.toHexString(buf[i] & 0xFF); + if (hex.length() == 1) { + hex = '0' + hex; + } + sb.append(hex.toUpperCase()); + } + return sb.toString(); + } + + /** + * 将十六进制转换为二进制 + * + * @param hexStr + * @return + */ + public static byte[] parseHexStr2Byte(String hexStr) { + if (hexStr.length() < 1) { + return null; + } + byte[] result = new byte[hexStr.length() / 2]; + for (int i = 0; i < hexStr.length() / 2; i++) { + int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16); + int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16); + result[i] = (byte) (high * 16 + low); + } + return result; + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/StringUtils.java b/wms_serve/src/main/java/com/wms/utils/StringUtils.java new file mode 100644 index 0000000..8520285 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/StringUtils.java @@ -0,0 +1,147 @@ +package com.wms.utils; + +import org.slf4j.Logger; +import org.springframework.util.DigestUtils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * WMS字符串工具类 + * @author 梁州 + * @date 2023/2/13 + */ +public class StringUtils { + + private static final Logger logger = org.slf4j.LoggerFactory.getLogger(StringUtils.class); + + /** 空字符串 */ + private static final String NULLSTR = ""; + + /** 下划线 */ + private static final char SEPARATOR = '_'; + + public static boolean isEmpty(String value) { + return value == null || value.equals(NULLSTR); + } + + public static boolean isNotEmpty(String value) { + return !isEmpty(value); + } + + /** + * 驼峰转下划线命名 + */ + public static String toUnderScoreCase(String str) + { + if (str == null) + { + return null; + } + StringBuilder sb = new StringBuilder(); + // 前置字符是否大写 + boolean preCharIsUpperCase = true; + // 当前字符是否大写 + boolean curreCharIsUpperCase = true; + // 下一字符是否大写 + boolean nexteCharIsUpperCase = true; + for (int i = 0; i < str.length(); i++) + { + char c = str.charAt(i); + if (i > 0) + { + preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); + } + else + { + preCharIsUpperCase = false; + } + + curreCharIsUpperCase = Character.isUpperCase(c); + + if (i < (str.length() - 1)) + { + nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); + } + + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) + { + sb.append(SEPARATOR); + } + else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) + { + sb.append(SEPARATOR); + } + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } + + /** + * 驼峰式命名法 + * 例如:user_name->userName + */ + public static String toCamelCase(String s) + { + if (s == null) + { + return null; + } + if (s.indexOf(SEPARATOR) == -1) + { + s = s.toLowerCase(); + return s; + } + s = s.toLowerCase(); + StringBuilder sb = new StringBuilder(s.length()); + boolean upperCase = false; + for (int i = 0; i < s.length(); i++) + { + char c = s.charAt(i); + + if (c == SEPARATOR) + { + upperCase = true; + } + else if (upperCase) + { + sb.append(Character.toUpperCase(c)); + upperCase = false; + } + else + { + sb.append(c); + } + } + return sb.toString(); + } + + + /** + * 将特定字符串转换为时间,若转换失败则返回最小时间 + * @param dataString 需要转换的时间字符串 + * @return 转化的结果 + * @author icewint + */ + public static Date toData(String dataString) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + return sdf.parse(dataString); + }catch ( Exception ex) { + return new Date(0); + } + } + + private static final String containerMd5Key = "safer*123"; // 四向车接口密钥 + + /** + * 四向车 MD5 加密 + * @param string 要加密的字符串 + * @return 加密之后的值 + */ + public static String containerMd5(String string) { + String needMd5Str = string + containerMd5Key; + return DigestUtils.md5DigestAsHex(needMd5Str.getBytes()); + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/TokenUtils.java b/wms_serve/src/main/java/com/wms/utils/TokenUtils.java new file mode 100644 index 0000000..f824f25 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/TokenUtils.java @@ -0,0 +1,6 @@ +package com.wms.utils; + +public class TokenUtils { + private static final long EXPIRE_TIME= 10*60*60*1000; //十小时 + private static final String TOKEN_SECRET="123456"; //密钥盐 +} diff --git a/wms_serve/src/main/java/com/wms/utils/WmsUtils.java b/wms_serve/src/main/java/com/wms/utils/WmsUtils.java new file mode 100644 index 0000000..1cafcd1 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/WmsUtils.java @@ -0,0 +1,174 @@ +package com.wms.utils; + +import org.apache.commons.lang3.StringUtils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.UUID; + +/** + * WMS工具类 + * @author 梁州 + * @date 2023/2/13 + */ +public class WmsUtils { + // 日期格式 + private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + // 时间格式 + private static final SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // id用的时间格式 + private static final SimpleDateFormat idTimeFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + private static volatile Long lastTimestamp = -1L; + /** + * 生成唯一的编号 + * @param code 插入字符串 + * @return 唯一id + */ + public static String generateId(String code) { + return code + generateUUIDString(); + } + + /** + * 生成UUID + */ + public synchronized static String generateUUIDString() { + long timeStamp = System.currentTimeMillis(); + if (timeStamp == lastTimestamp) { + try { + Thread.sleep(1); + } catch (InterruptedException e){ + timeStamp = System.currentTimeMillis(); + lastTimestamp = timeStamp; + return idTimeFormat.format(new Date()).concat(String.valueOf(timeStamp)); + } + timeStamp = System.currentTimeMillis(); + lastTimestamp = timeStamp; + return idTimeFormat.format(new Date()).concat(String.valueOf(timeStamp)); + } else { + lastTimestamp = timeStamp; + return idTimeFormat.format(new Date()).concat(String.valueOf(timeStamp)); + } + } + + /** + * 时间字符串转时间格式 + * @param time 时间 + */ + public static Date timeStringToTime(String time) throws ParseException { + return timeFormat.parse(time); + } + + /** + * 日期字符串 + * @param date 日期 + */ + public static Date dateStringToDate(String date) throws ParseException { + return dateFormat.parse(date); + } + + /** + * 生成时间戳,格式yyyy-MM-dd HH:mm:ss + * @return 时间戳 + */ + public static String createCurrentTimeString() { + return timeFormat.format(new Date()); + } + + /** + * 生成日期字符串,格式yyyy-MM-dd + * @return 时间戳 + */ + public static String createCurrentDateString() { + return dateFormat.format(new Date()); + } + + /** + * 格式化日期,格式yyyy-MM-dd + * @param date 日期 + * @return 时间戳 + */ + public static String formatDateString(Date date) { + return dateFormat.format(date); + } + + /** + * 格式化时间,格式yyyy-MM-dd HH:mm:ss + * @param date 日期 + * @return 时间戳 + */ + public static String formatTimeString(Date date) { + return timeFormat.format(date); + } + + /** + * 获得指定日期之后指定天数的日期 + * @param beginDay 开始日期 + * @param days 天数 + * @return 日期 + */ + public static Date calculationDate(Date beginDay, int days){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(beginDay); + calendar.add(Calendar.DATE, days); + return calendar.getTime(); + } + + /** + * 获得指定日期之后指定月数的日期 + * @param beginDay 开始日期 + * @param months 月数 + * @return 日期 + */ + public static Date calculationMonth(Date beginDay, int months){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(beginDay); + calendar.add(Calendar.MONTH, months); + return calendar.getTime(); + } + + /** + * 获得指定日期之后指定年数的日期 + * @param beginDay 开始日期 + * @param years 年数 + * @return 日期 + */ + public static Date calculationYear(Date beginDay, int years){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(beginDay); + calendar.add(Calendar.YEAR, years); + return calendar.getTime(); + } + + /** + * 获取指定天数后的日期 + * @param day 天数 + * @return 日期 + */ + public static Date getDay(int day){ + return calculationDate(new Date(), day); + } + + /** + * 获取任意月后的时间 + * @Params: mon 1表示后一个月 -1表示前一个月 + * @Return + */ + public static Date getMon(int mon){ + return calculationMonth(new Date(), mon); + } + + /** + * 获取任意年之后的日期 + * @param year 年 + * @return 日期 + */ + public static Date getYear(int year){ + return calculationYear(new Date(), year); + } + + + + +} diff --git a/wms_serve/src/main/java/com/wms/utils/excel/ExcelClassField.java b/wms_serve/src/main/java/com/wms/utils/excel/ExcelClassField.java new file mode 100644 index 0000000..008be2b --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/excel/ExcelClassField.java @@ -0,0 +1,71 @@ +package com.wms.utils.excel; + +import java.util.LinkedHashMap; + +public class ExcelClassField { + /** 字段名称 */ + private String fieldName; + + /** 表头名称 */ + private String name; + + /** 映射关系 */ + private LinkedHashMap kvMap; + + /** 示例值 */ + private Object example; + + /** 排序 */ + private int sort; + + /** 是否为注解字段:0-否,1-是 */ + private int hasAnnotation; + + public String getFieldName() { + return fieldName; + } + + public void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public LinkedHashMap getKvMap() { + return kvMap; + } + + public void setKvMap(LinkedHashMap kvMap) { + this.kvMap = kvMap; + } + + public Object getExample() { + return example; + } + + public void setExample(Object example) { + this.example = example; + } + + public int getSort() { + return sort; + } + + public void setSort(int sort) { + this.sort = sort; + } + + public int getHasAnnotation() { + return hasAnnotation; + } + + public void setHasAnnotation(int hasAnnotation) { + this.hasAnnotation = hasAnnotation; + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/excel/ExcelExport.java b/wms_serve/src/main/java/com/wms/utils/excel/ExcelExport.java new file mode 100644 index 0000000..431d99e --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/excel/ExcelExport.java @@ -0,0 +1,22 @@ +package com.wms.utils.excel; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ExcelExport { + /** 字段名称 */ + String value(); + + /** 导出排序先后: 数字越小越靠前(默认按Java类字段顺序导出) */ + int sort() default 0; + + /** 导出映射,格式如:0-未知;1-男;2-女 */ + String kv() default ""; + + /** 导出模板示例值(有值的话,直接取该值,不做映射) */ + String example() default ""; +} diff --git a/wms_serve/src/main/java/com/wms/utils/excel/ExcelImport.java b/wms_serve/src/main/java/com/wms/utils/excel/ExcelImport.java new file mode 100644 index 0000000..58c7b52 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/excel/ExcelImport.java @@ -0,0 +1,25 @@ +package com.wms.utils.excel; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ExcelImport { + /** 字段名称 */ + String value(); + + /** 导出映射,格式如:0-未知;1-男;2-女 */ + String kv() default ""; + + /** 是否为必填字段(默认为非必填) */ + boolean required() default false; + + /** 最大长度(默认255) */ + int maxLength() default 255; + + /** 导入唯一性验证(多个字段则取联合验证) */ + boolean unique() default false; +} diff --git a/wms_serve/src/main/java/com/wms/utils/excel/ExcelUtils.java b/wms_serve/src/main/java/com/wms/utils/excel/ExcelUtils.java new file mode 100644 index 0000000..28c81d1 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/excel/ExcelUtils.java @@ -0,0 +1,1026 @@ +package com.wms.utils.excel; + + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletResponse; +import org.apache.poi.hssf.usermodel.HSSFDataFormatter; +import org.apache.poi.hssf.usermodel.HSSFDataValidation; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.CellRangeAddressList; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.*; +import org.springframework.web.multipart.MultipartFile; +import org.apache.poi.ss.usermodel.DateUtil; + +import java.io.*; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.net.URL; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * Excel工具类 + */ +@SuppressWarnings("unused") +public class ExcelUtils { + private static final String XLSX = ".xlsx"; + private static final String XLS = ".xls"; + public static final String ROW_MERGE = "row_merge"; + public static final String COLUMN_MERGE = "column_merge"; + private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + private static final String ROW_NUM = "rowNum"; + private static final String ROW_DATA = "rowData"; + private static final String ROW_TIPS = "rowTips"; + private static final int CELL_OTHER = 0; + private static final int CELL_ROW_MERGE = 1; + private static final int CELL_COLUMN_MERGE = 2; + private static final int IMG_HEIGHT = 30; + private static final int IMG_WIDTH = 30; + private static final char LEAN_LINE = '/'; + private static final int BYTES_DEFAULT_LENGTH = 10240; + private static final NumberFormat NUMBER_FORMAT = NumberFormat.getNumberInstance(); + + public static List readFile(File file, Class clazz) throws Exception { + JSONArray array = readFile(file); + return getBeanList(array, clazz); + } + + public static List readMultipartFile(MultipartFile mFile, Class clazz) throws Exception { + JSONArray array = readMultipartFile(mFile); + return getBeanList(array, clazz); + } + public static JSONArray readFile(File file) throws Exception { + return readExcel(null, file); + } + + public static JSONArray readMultipartFile(MultipartFile mFile) throws Exception { + return readExcel(mFile, null); + } + + public static Map readFileManySheet(File file) throws Exception { + return readExcelManySheet(null, file); + } + + public static Map readFileManySheet(MultipartFile file) throws Exception { + return readExcelManySheet(file, null); + } + + private static List getBeanList(JSONArray array, Class clazz) throws Exception { + List list = new ArrayList<>(); + Map uniqueMap = new HashMap<>(16); + for (int i = 0; i < array.size(); i++) { + list.add(getBean(clazz, array.getJSONObject(i), uniqueMap)); + } + return list; + } + + + /** + * 获取每个对象的数据 + */ + private static T getBean(Class c, JSONObject obj, Map uniqueMap) throws Exception { + T t = c.getDeclaredConstructor().newInstance(); + Field[] fields = c.getDeclaredFields(); + List errMsgList = new ArrayList<>(); + boolean hasRowTipsField = false; + StringBuilder uniqueBuilder = new StringBuilder(); + int rowNum = 0; + for (Field field : fields) { + // 行号 + if (field.getName().equals(ROW_NUM)) { + rowNum = obj.getInteger(ROW_NUM); + field.setAccessible(true); + field.set(t, rowNum); + continue; + } + // 是否需要设置异常信息 + if (field.getName().equals(ROW_TIPS)) { + hasRowTipsField = true; + continue; + } + // 原始数据 + if (field.getName().equals(ROW_DATA)) { + field.setAccessible(true); + field.set(t, obj.toString()); + continue; + } + // 设置对应属性值 + setFieldValue(t, field, obj, uniqueBuilder, errMsgList); + } + // 数据唯一性校验 + if (uniqueBuilder.length() > 0) { + if (uniqueMap.containsValue(uniqueBuilder.toString())) { + Set rowNumKeys = uniqueMap.keySet(); + for (Integer num : rowNumKeys) { + if (uniqueMap.get(num).equals(uniqueBuilder.toString())) { + errMsgList.add(String.format("数据唯一性校验失败,(%s)与第%s行重复)", uniqueBuilder, num)); + } + } + } else { + uniqueMap.put(rowNum, uniqueBuilder.toString()); + } + } + // 失败处理 + if (errMsgList.isEmpty() && !hasRowTipsField) { + return t; + } + StringBuilder sb = new StringBuilder(); + int size = errMsgList.size(); + for (int i = 0; i < size; i++) { + if (i == size - 1) { + sb.append(errMsgList.get(i)); + } else { + sb.append(errMsgList.get(i)).append(";"); + } + } + // 设置错误信息 + for (Field field : fields) { + if (field.getName().equals(ROW_TIPS)) { + field.setAccessible(true); + field.set(t, sb.toString()); + } + } + return t; + } + + private static void setFieldValue(T t, Field field, JSONObject obj, StringBuilder uniqueBuilder, List errMsgList) { + // 获取 ExcelImport 注解属性 + ExcelImport annotation = field.getAnnotation(ExcelImport.class); + if (annotation == null) { + return; + } + String cname = annotation.value(); + if (cname.trim().length() == 0) { + return; + } + // 获取具体值 + String val = null; + if (obj.containsKey(cname)) { + val = getString(obj.getString(cname)); + } + if (val == null) { + return; + } + field.setAccessible(true); + // 判断是否必填 + boolean require = annotation.required(); + if (require && val.isEmpty()) { + errMsgList.add(String.format("[%s]不能为空", cname)); + return; + } + // 数据唯一性获取 + boolean unique = annotation.unique(); + if (unique) { + if (uniqueBuilder.length() > 0) { + uniqueBuilder.append("--").append(val); + } else { + uniqueBuilder.append(val); + } + } + // 判断是否超过最大长度 + int maxLength = annotation.maxLength(); + if (maxLength > 0 && val.length() > maxLength) { + errMsgList.add(String.format("[%s]长度不能超过%s个字符(当前%s个字符)", cname, maxLength, val.length())); + } + // 判断当前属性是否有映射关系 + LinkedHashMap kvMap = getKvMap(annotation.kv()); + if (!kvMap.isEmpty()) { + boolean isMatch = false; + for (String key : kvMap.keySet()) { + if (kvMap.get(key).equals(val)) { + val = key; + isMatch = true; + break; + } + } + if (!isMatch) { + errMsgList.add(String.format("[%s]的值不正确(当前值为%s)", cname, val)); + return; + } + } + // 其余情况根据类型赋值 + String fieldClassName = field.getType().getSimpleName(); + try { + if ("String".equalsIgnoreCase(fieldClassName)) { + field.set(t, val); + } else if ("boolean".equalsIgnoreCase(fieldClassName)) { + field.set(t, Boolean.valueOf(val)); + } else if ("int".equalsIgnoreCase(fieldClassName) || "Integer".equals(fieldClassName)) { + try { + field.set(t, Integer.valueOf(val)); + } catch (NumberFormatException e) { + errMsgList.add(String.format("[%s]的值格式不正确(当前值为%s)", cname, val)); + } + } else if ("double".equalsIgnoreCase(fieldClassName)) { + field.set(t, Double.valueOf(val)); + } else if ("long".equalsIgnoreCase(fieldClassName)) { + field.set(t, Long.valueOf(val)); + } else if ("BigDecimal".equalsIgnoreCase(fieldClassName)) { + field.set(t, new BigDecimal(val)); + } else if ("Date".equalsIgnoreCase(fieldClassName)) { + try { + field.set(t, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(val)); + } catch (Exception e) { + field.set(t, new SimpleDateFormat("yyyy-MM-dd").parse(val)); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static Map readExcelManySheet(MultipartFile mFile, File file) throws IOException { + Workbook book = getWorkbook(mFile, file); + if (book == null) { + return Collections.emptyMap(); + } + Map map = new LinkedHashMap<>(); + for (int i = 0; i < book.getNumberOfSheets(); i++) { + Sheet sheet = book.getSheetAt(i); + JSONArray arr = readSheet(sheet); + map.put(sheet.getSheetName(), arr); + } + book.close(); + return map; + } + + private static JSONArray readExcel(MultipartFile mFile, File file) throws IOException { + Workbook book = getWorkbook(mFile, file); + if (book == null) { + return new JSONArray(); + } + JSONArray array = readSheet(book.getSheetAt(0)); + book.close(); + return array; + } + + private static Workbook getWorkbook(MultipartFile mFile, File file) throws IOException { + boolean fileNotExist = (file == null || !file.exists()); + if (mFile == null && fileNotExist) { + return null; + } + // 解析表格数据 + InputStream in; + String fileName; + if (mFile != null) { + // 上传文件解析 + in = mFile.getInputStream(); + fileName = getString(mFile.getOriginalFilename()).toLowerCase(); + } else { + // 本地文件解析 + in = new FileInputStream(file); + fileName = file.getName().toLowerCase(); + } + Workbook book; + if (fileName.endsWith(XLSX)) { + book = new XSSFWorkbook(in); + } else if (fileName.endsWith(XLS)) { + POIFSFileSystem poifsFileSystem = new POIFSFileSystem(in); + book = new HSSFWorkbook(poifsFileSystem); + } else { + return null; + } + in.close(); + return book; + } + + private static JSONArray readSheet(Sheet sheet) { + // 首行下标 + int rowStart = sheet.getFirstRowNum(); + // 尾行下标 + int rowEnd = sheet.getLastRowNum(); + // 获取表头行 + Row headRow = sheet.getRow(rowStart); + if (headRow == null) { + return new JSONArray(); + } + int cellStart = headRow.getFirstCellNum(); + int cellEnd = headRow.getLastCellNum(); + Map keyMap = new HashMap<>(); + for (int j = cellStart; j < cellEnd; j++) { + // 获取表头数据 + String val = getCellValue(headRow.getCell(j)); + if (val != null && val.trim().length() != 0) { + keyMap.put(j, val); + } + } + // 如果表头没有数据则不进行解析 + if (keyMap.isEmpty()) { + return (JSONArray) Collections.emptyList(); + } + // 获取每行JSON对象的值 + JSONArray array = new JSONArray(); + // 如果首行与尾行相同,表明只有一行,返回表头数据 + if (rowStart == rowEnd) { + JSONObject obj = new JSONObject(); + // 添加行号 + obj.put(ROW_NUM, 1); + for (int i : keyMap.keySet()) { + obj.put(keyMap.get(i), ""); + } + array.add(obj); + return array; + } + for (int i = rowStart + 1; i <= rowEnd; i++) { + Row eachRow = sheet.getRow(i); + JSONObject obj = new JSONObject(); + // 添加行号 + obj.put(ROW_NUM, i + 1); + StringBuilder sb = new StringBuilder(); + for (int k = cellStart; k < cellEnd; k++) { + if (eachRow != null) { + String val = getCellValue(eachRow.getCell(k)); + // 所有数据添加到里面,用于判断该行是否为空 + sb.append(val); + obj.put(keyMap.get(k), val); + } + } + if (sb.length() > 0) { + array.add(obj); + } + } + return array; + } + + private static String getCellValue(Cell cell) { + // 空白或空 + if (cell == null || cell.getCellType() == CellType.BLANK) { + return ""; + } + // String类型 + if (cell.getCellType() == CellType.STRING) { + String val = cell.getStringCellValue(); + if (val == null || val.trim().length() == 0) { + return ""; + } + return val.trim(); + } + // 数字类型 + if (cell.getCellType() == CellType.NUMERIC) { + if (DateUtil.isCellDateFormatted(cell)) {// 日期类型 + // 短日期转化为字符串 + Date date = cell.getDateCellValue(); + if (date != null) { + // 标准0点 1970/01/01 08:00:00 + if (date.getTime() % 86400000 == 16 * 3600 * 1000 && cell.getCellStyle().getDataFormat() == 14) { + return new SimpleDateFormat("yyyy-MM-dd").format(date); + } else { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); + } + } + } else {// 数值 + //System.out.println("Value:"+cell.getNumericCellValue()); + String numberStr = new HSSFDataFormatter().formatCellValue(cell); + // 货币格式,如:1,200.00 + if (numberStr.contains(",")) { + numberStr = numberStr.replace(",", ""); + } + if (numberStr.contains("E")) { // 科学计算法 + numberStr = new DecimalFormat("0").format(cell.getNumericCellValue()); //4.89481368464913E14还原为长整数 + return numberStr; + } else { + if (numberStr.contains(".")) { // 小数 + return numberStr; + } else { // 转换为整数 + return numberStr; + } + } + } +// String s = cell.getNumericCellValue() + ""; +// // 去掉尾巴上的小数点0 +// if (Pattern.matches(".*\\.0*", s)) { +// return s.split("\\.")[0]; +// } else { +// return s; +// } + } + // 布尔值类型 + if (cell.getCellType() == CellType.BOOLEAN) { + return String.valueOf(cell.getBooleanCellValue()); + } + // 错误类型 + return cell.getCellFormula(); + } + + public static void exportTemplate(HttpServletResponse response, String fileName, Class clazz) { + exportTemplate(response, fileName, fileName, clazz, false); + } + + public static void exportTemplate(HttpServletResponse response, String fileName, String sheetName, + Class clazz) { + exportTemplate(response, fileName, sheetName, clazz, false); + } + + public static void exportTemplate(HttpServletResponse response, String fileName, Class clazz, + boolean isContainExample) { + exportTemplate(response, fileName, fileName, clazz, isContainExample); + } + + public static void exportTemplate(HttpServletResponse response, String fileName, String sheetName, + Class clazz, boolean isContainExample) { + // 获取表头字段 + List headFieldList = getExcelClassFieldList(clazz); + // 获取表头数据和示例数据 + List> sheetDataList = new ArrayList<>(); + List headList = new ArrayList<>(); + List exampleList = new ArrayList<>(); + Map> selectMap = new LinkedHashMap<>(); + for (int i = 0; i < headFieldList.size(); i++) { + ExcelClassField each = headFieldList.get(i); + headList.add(each.getName()); + exampleList.add(each.getExample()); + LinkedHashMap kvMap = each.getKvMap(); + if (kvMap != null && kvMap.size() > 0) { + selectMap.put(i, new ArrayList<>(kvMap.values())); + } + } + sheetDataList.add(headList); + if (isContainExample) { + sheetDataList.add(exampleList); + } + // 导出数据 + export(response, fileName, sheetName, sheetDataList, selectMap); + } + + private static List getExcelClassFieldList(Class clazz) { + // 解析所有字段 + Field[] fields = clazz.getDeclaredFields(); + boolean hasExportAnnotation = false; + Map> map = new LinkedHashMap<>(); + List sortList = new ArrayList<>(); + for (Field field : fields) { + ExcelClassField cf = getExcelClassField(field); + if (cf.getHasAnnotation() == 1) { + hasExportAnnotation = true; + } + int sort = cf.getSort(); + if (map.containsKey(sort)) { + map.get(sort).add(cf); + } else { + List list = new ArrayList<>(); + list.add(cf); + sortList.add(sort); + map.put(sort, list); + } + } + Collections.sort(sortList); + // 获取表头 + List headFieldList = new ArrayList<>(); + if (hasExportAnnotation) { + for (Integer sort : sortList) { + for (ExcelClassField cf : map.get(sort)) { + if (cf.getHasAnnotation() == 1) { + headFieldList.add(cf); + } + } + } + } else { + headFieldList.addAll(map.get(0)); + } + return headFieldList; + } + + private static ExcelClassField getExcelClassField(Field field) { + ExcelClassField cf = new ExcelClassField(); + String fieldName = field.getName(); + cf.setFieldName(fieldName); + ExcelExport annotation = field.getAnnotation(ExcelExport.class); + // 无 ExcelExport 注解情况 + if (annotation == null) { + cf.setHasAnnotation(0); + cf.setName(fieldName); + cf.setSort(0); + return cf; + } + // 有 ExcelExport 注解情况 + cf.setHasAnnotation(1); + cf.setName(annotation.value()); + String example = getString(annotation.example()); + if (!example.isEmpty()) { + if (isNumeric(example) && example.length() < 8) { + cf.setExample(Double.valueOf(example)); + } else { + cf.setExample(example); + } + } else { + cf.setExample(""); + } + cf.setSort(annotation.sort()); + // 解析映射 + String kv = getString(annotation.kv()); + cf.setKvMap(getKvMap(kv)); + return cf; + } + + private static LinkedHashMap getKvMap(String kv) { + LinkedHashMap kvMap = new LinkedHashMap<>(); + if (kv.isEmpty()) { + return kvMap; + } + String[] kvs = kv.split(";"); + for (String each : kvs) { + String[] eachKv = getString(each).split("-"); + if (eachKv.length != 2) { + continue; + } + String k = eachKv[0]; + String v = eachKv[1]; + if (k.isEmpty() || v.isEmpty()) { + continue; + } + kvMap.put(k, v); + } + return kvMap; + } + + /** + * 导出表格到本地 + * + * @param file 本地文件对象 + * @param sheetData 导出数据 + */ + public static void exportFile(File file, List> sheetData) { + if (file == null) { + System.out.println("文件创建失败"); + return; + } + if (sheetData == null) { + sheetData = new ArrayList<>(); + } + Map>> map = new HashMap<>(); + map.put(file.getName(), sheetData); + export(null, file, file.getName(), map, null); + } + + /** + * 导出表格到本地 + * + * @param 导出数据类似,和K类型保持一致 + * @param filePath 文件父路径(如:D:/doc/excel/) + * @param fileName 文件名称(不带尾缀,如:学生表) + * @param list 导出数据 + * @throws IOException IO异常 + */ + public static File exportFile(String filePath, String fileName, List list) throws IOException { + File file = getFile(filePath, fileName); + List> sheetData = getSheetData(list); + exportFile(file, sheetData); + return file; + } + + /** + * 获取文件 + * + * @param filePath filePath 文件父路径(如:D:/doc/excel/) + * @param fileName 文件名称(不带尾缀,如:用户表) + * @return 本地File文件对象 + */ + private static File getFile(String filePath, String fileName) throws IOException { + String dirPath = getString(filePath); + String fileFullPath; + if (dirPath.isEmpty()) { + fileFullPath = fileName; + } else { + // 判定文件夹是否存在,如果不存在,则级联创建 + File dirFile = new File(dirPath); + if (!dirFile.exists()) { + boolean mkdirs = dirFile.mkdirs(); + if (!mkdirs) { + return null; + } + } + // 获取文件夹全名 + if (dirPath.endsWith(String.valueOf(LEAN_LINE))) { + fileFullPath = dirPath + fileName + XLSX; + } else { + fileFullPath = dirPath + LEAN_LINE + fileName + XLSX; + } + } + System.out.println(fileFullPath); + File file = new File(fileFullPath); + if (!file.exists()) { + boolean result = file.createNewFile(); + if (!result) { + return null; + } + } + return file; + } + + private static List> getSheetData(List list) { + // 获取表头字段 + List excelClassFieldList = getExcelClassFieldList(list.get(0).getClass()); + List headFieldList = new ArrayList<>(); + List headList = new ArrayList<>(); + Map headFieldMap = new HashMap<>(); + for (ExcelClassField each : excelClassFieldList) { + String fieldName = each.getFieldName(); + headFieldList.add(fieldName); + headFieldMap.put(fieldName, each); + headList.add(each.getName()); + } + // 添加表头名称 + List> sheetDataList = new ArrayList<>(); + sheetDataList.add(headList); + // 获取表数据 + for (T t : list) { + Map fieldDataMap = getFieldDataMap(t); + Set fieldDataKeys = fieldDataMap.keySet(); + List rowList = new ArrayList<>(); + for (String headField : headFieldList) { + if (!fieldDataKeys.contains(headField)) { + continue; + } + Object data = fieldDataMap.get(headField); + if (data == null) { + rowList.add(""); + continue; + } + ExcelClassField cf = headFieldMap.get(headField); + // 判断是否有映射关系 + LinkedHashMap kvMap = cf.getKvMap(); + if (kvMap == null || kvMap.isEmpty()) { + rowList.add(data); + continue; + } + String val = kvMap.get(data.toString()); + if (isNumeric(val)) { + rowList.add(Double.valueOf(val)); + } else { + rowList.add(val); + } + } + sheetDataList.add(rowList); + } + return sheetDataList; + } + + private static Map getFieldDataMap(T t) { + Map map = new HashMap<>(); + Field[] fields = t.getClass().getDeclaredFields(); + try { + for (Field field : fields) { + String fieldName = field.getName(); + field.setAccessible(true); + Object object = field.get(t); + map.put(fieldName, object); + } + } catch (IllegalArgumentException | IllegalAccessException e) { + e.printStackTrace(); + } + return map; + } + + public static void exportEmpty(HttpServletResponse response, String fileName) { + List> sheetDataList = new ArrayList<>(); + List headList = new ArrayList<>(); + headList.add("导出无数据"); + sheetDataList.add(headList); + export(response, fileName, sheetDataList); + } + + public static void export(HttpServletResponse response, String fileName, List> sheetDataList) { + export(response, fileName, fileName, sheetDataList, null); + } + + public static void exportManySheet(HttpServletResponse response, String fileName, Map>> sheetMap) { + export(response, null, fileName, sheetMap, null); + } + + + public static void export(HttpServletResponse response, String fileName, String sheetName, + List> sheetDataList) { + export(response, fileName, sheetName, sheetDataList, null); + } + + public static void export(HttpServletResponse response, String fileName, String sheetName, + List> sheetDataList, Map> selectMap) { + + Map>> map = new HashMap<>(); + map.put(sheetName, sheetDataList); + export(response, null, fileName, map, selectMap); + } + + public static void export(HttpServletResponse response, String fileName, List list, Class template) { + // list 是否为空 + boolean lisIsEmpty = list == null || list.isEmpty(); + // 如果模板数据为空,且导入的数据为空,则导出空文件 + if (template == null && lisIsEmpty) { + exportEmpty(response, fileName); + return; + } + // 如果 list 数据,则导出模板数据 + if (lisIsEmpty) { + exportTemplate(response, fileName, template); + return; + } + // 导出数据 + List> sheetDataList = getSheetData(list); + export(response, fileName, sheetDataList); + } + + public static void export(HttpServletResponse response, String fileName, List> sheetDataList, Map> selectMap) { + export(response, fileName, fileName, sheetDataList, selectMap); + } + + private static void export(HttpServletResponse response, File file, String fileName, + Map>> sheetMap, Map> selectMap) { + // 整个 Excel 表格 book 对象 + SXSSFWorkbook book = new SXSSFWorkbook(); + // 每个 Sheet 页 + Set>>> entries = sheetMap.entrySet(); + for (Map.Entry>> entry : entries) { + List> sheetDataList = entry.getValue(); + Sheet sheet = book.createSheet(entry.getKey()); + Drawing patriarch = sheet.createDrawingPatriarch(); + // 设置表头背景色(灰色) + CellStyle headStyle = book.createCellStyle(); + headStyle.setFillForegroundColor(IndexedColors.GREY_80_PERCENT.index); + headStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + headStyle.setAlignment(HorizontalAlignment.CENTER); + headStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index); + // 设置表身背景色(默认色) + CellStyle rowStyle = book.createCellStyle(); + rowStyle.setAlignment(HorizontalAlignment.CENTER); + rowStyle.setVerticalAlignment(VerticalAlignment.CENTER); + // 设置表格列宽度(默认为15个字节) + sheet.setDefaultColumnWidth(15); + // 创建合并算法数组 + int rowLength = sheetDataList.size(); + int columnLength = sheetDataList.get(0).size(); + int[][] mergeArray = new int[rowLength][columnLength]; + for (int i = 0; i < sheetDataList.size(); i++) { + // 每个 Sheet 页中的行数据 + Row row = sheet.createRow(i); + List rowList = sheetDataList.get(i); + for (int j = 0; j < rowList.size(); j++) { + // 每个行数据中的单元格数据 + Object o = rowList.get(j); + int v = 0; + if (o instanceof URL) { + // 如果要导出图片的话, 链接需要传递 URL 对象 + setCellPicture(book, row, patriarch, i, j, (URL) o); + } else { + Cell cell = row.createCell(j); + if (i == 0) { + // 第一行为表头行,采用灰色底背景 + v = setCellValue(cell, o, headStyle); + } else { + // 其他行为数据行,默认白底色 + v = setCellValue(cell, o, rowStyle); + } + } + mergeArray[i][j] = v; + } + } + // 合并单元格 + mergeCells(sheet, mergeArray); + // 设置下拉列表 + setSelect(sheet, selectMap); + } + // 写数据 + if (response != null) { + // 前端导出 + try { + write(response, book, fileName); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + // 本地导出 + FileOutputStream fos; + try { + fos = new FileOutputStream(file); + ByteArrayOutputStream ops = new ByteArrayOutputStream(); + book.write(ops); + fos.write(ops.toByteArray()); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + /** + * 合并当前Sheet页的单元格 + * + * @param sheet 当前 sheet 页 + * @param mergeArray 合并单元格算法 + */ + private static void mergeCells(Sheet sheet, int[][] mergeArray) { + // 横向合并 + for (int x = 0; x < mergeArray.length; x++) { + int[] arr = mergeArray[x]; + boolean merge = false; + int y1 = 0; + int y2 = 0; + for (int y = 0; y < arr.length; y++) { + int value = arr[y]; + if (value == CELL_COLUMN_MERGE) { + if (!merge) { + y1 = y; + } + y2 = y; + merge = true; + } else { + merge = false; + if (y1 > 0) { + sheet.addMergedRegion(new CellRangeAddress(x, x, (y1 - 1), y2)); + } + y1 = 0; + y2 = 0; + } + } + if (y1 > 0) { + sheet.addMergedRegion(new CellRangeAddress(x, x, (y1 - 1), y2)); + } + } + // 纵向合并 + int xLen = mergeArray.length; + int yLen = mergeArray[0].length; + for (int y = 0; y < yLen; y++) { + boolean merge = false; + int x1 = 0; + int x2 = 0; + for (int x = 0; x < xLen; x++) { + int value = mergeArray[x][y]; + if (value == CELL_ROW_MERGE) { + if (!merge) { + x1 = x; + } + x2 = x; + merge = true; + } else { + merge = false; + if (x1 > 0) { + sheet.addMergedRegion(new CellRangeAddress((x1 - 1), x2, y, y)); + } + x1 = 0; + x2 = 0; + } + } + if (x1 > 0) { + sheet.addMergedRegion(new CellRangeAddress((x1 - 1), x2, y, y)); + } + } + } + + private static void write(HttpServletResponse response, SXSSFWorkbook book, String fileName) throws IOException { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String name = new String(fileName.getBytes("GBK"), "ISO8859_1") + XLSX; + response.addHeader("Content-Disposition", "attachment;filename=" + name); + ServletOutputStream out = response.getOutputStream(); + book.write(out); + out.flush(); + out.close(); + } + + private static int setCellValue(Cell cell, Object o, CellStyle style) { + // 设置样式 + cell.setCellStyle(style); + // 数据为空时 + if (o == null) { +// cell.setCellType(CellType.STRING); + cell.setCellValue(""); + return CELL_OTHER; + } + // 是否为字符串 + if (o instanceof String) { + String s = o.toString(); + // 当数字类型长度超过8位时,改为字符串类型显示(Excel数字超过一定长度会显示为科学计数法) +// if (isNumeric(s) && s.length() < 8) { +//// cell.setCellType(CellType.NUMERIC); +// cell.setCellValue(Double.parseDouble(s)); +// return CELL_OTHER; +// } else { +//// cell.setCellType(CellType.STRING); +// cell.setCellValue(s); +// } + cell.setCellValue(s); + if (s.equals(ROW_MERGE)) { + return CELL_ROW_MERGE; + } else if (s.equals(COLUMN_MERGE)) { + return CELL_COLUMN_MERGE; + } else { + return CELL_OTHER; + } + } + // 是否为字符串 + if (o instanceof Integer || o instanceof Long || o instanceof Double || o instanceof Float) { +// cell.setCellType(CellType.NUMERIC); + cell.setCellValue(Double.parseDouble(o.toString())); + return CELL_OTHER; + } + // 是否为Boolean + if (o instanceof Boolean) { +// cell.setCellType(CellType.BOOLEAN); + cell.setCellValue((Boolean) o); + return CELL_OTHER; + } + // 如果是BigDecimal,则默认3位小数 + if (o instanceof BigDecimal) { +// cell.setCellType(CellType.NUMERIC); + cell.setCellValue(((BigDecimal) o).setScale(3, RoundingMode.HALF_UP).doubleValue()); + return CELL_OTHER; + } + // 如果是Date数据,则显示格式化数据 + if (o instanceof Date) { +// cell.setCellType(CellType.STRING); + cell.setCellValue(formatDate((Date) o)); + return CELL_OTHER; + } + // 如果是其他,则默认字符串类型 +// cell.setCellType(CellType.STRING); + cell.setCellValue(o.toString()); + return CELL_OTHER; + } + + private static void setCellPicture(SXSSFWorkbook wb, Row sr, Drawing patriarch, int x, int y, URL url) { + // 设置图片宽高 + sr.setHeight((short) (IMG_WIDTH * IMG_HEIGHT)); + // (jdk1.7版本try中定义流可自动关闭) + try (InputStream is = url.openStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + byte[] buff = new byte[BYTES_DEFAULT_LENGTH]; + int rc; + while ((rc = is.read(buff, 0, BYTES_DEFAULT_LENGTH)) > 0) { + outputStream.write(buff, 0, rc); + } + // 设置图片位置 + XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, y, x, y + 1, x + 1); + // 设置这个,图片会自动填满单元格的长宽 + anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE); + patriarch.createPicture(anchor, wb.addPicture(outputStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static String formatDate(Date date) { + if (date == null) { + return ""; + } + SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT); + return format.format(date); + } + + private static void setSelect(Sheet sheet, Map> selectMap) { + if (selectMap == null || selectMap.isEmpty()) { + return; + } + Set>> entrySet = selectMap.entrySet(); + for (Map.Entry> entry : entrySet) { + int y = entry.getKey(); + List list = entry.getValue(); + if (list == null || list.isEmpty()) { + continue; + } + String[] arr = new String[list.size()]; + for (int i = 0; i < list.size(); i++) { + arr[i] = list.get(i); + } + DataValidationHelper helper = sheet.getDataValidationHelper(); + CellRangeAddressList addressList = new CellRangeAddressList(1, 65000, y, y); + DataValidationConstraint dvc = helper.createExplicitListConstraint(arr); + DataValidation dv = helper.createValidation(dvc, addressList); + if (dv instanceof HSSFDataValidation) { + dv.setSuppressDropDownArrow(false); + } else { + dv.setSuppressDropDownArrow(true); + dv.setShowErrorBox(true); + } + sheet.addValidationData(dv); + } + } + + private static boolean isNumeric(String str) { + if (Objects.nonNull(str) && "0.0".equals(str)) { + return true; + } + for (int i = str.length(); --i >= 0; ) { + if (!Character.isDigit(str.charAt(i))) { + return false; + } + } + return true; + } + + private static String getString(String s) { + if (s == null) { + return ""; + } + if (s.isEmpty()) { + return s; + } + return s.trim(); + } +} diff --git a/wms_serve/src/main/java/com/wms/utils/storage/LocationUtils.java b/wms_serve/src/main/java/com/wms/utils/storage/LocationUtils.java new file mode 100644 index 0000000..426cdc0 --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/storage/LocationUtils.java @@ -0,0 +1,159 @@ +package com.wms.utils.storage; + +import com.wms.constants.enums.LocationStatus; +import com.wms.entity.app.container.CreateInstoreTaskResponse; +import com.wms.entity.table.AppOrderIn; +import com.wms.entity.table.Location; +import com.wms.entity.table.Stock; +import com.wms.entity.table.Task; +import com.wms.mapper.LocationMapper; +import com.wms.mapper.StockMapper; +import com.wms.mapper.TaskMapper; +import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Objects; + +/** + * 库位工具类 + */ +@Component +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class LocationUtils { + + private static final Logger log = LoggerFactory.getLogger(LocationUtils.class); + /** + * 库存 Mapper + */ + private final StockMapper stockMapper; + + /** + * 库位 Mapper + */ + private final LocationMapper locationMapper; + + /** + * 任务mapper + */ + private final TaskMapper taskMapper; + + /** + * 获取一个区域的可用的库位 + * + * @param areaId 区域ID + * @param appOrderIn + * @return 可用的库位排序 + */ + public List getNewLocation(Integer areaId, AppOrderIn appOrderIn) { + if (Objects.equals(appOrderIn.getWareHouse(), "A")){ + Location query = new Location(); + query.setAreaId(areaId); + query.setWareArea("A"); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + List canUseLocations = locationMapper.selNextLocation(query); + if(canUseLocations.isEmpty()){ + log.info("A级优先级没有可用库位,开始寻找B级库位"); + query.setAreaId(areaId); + query.setWareArea("B"); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + List canUseLocations2 = locationMapper.selNextLocation(query); + if (canUseLocations2.isEmpty()){ + log.info("A,B级优先级没有可用库位,开始寻找C级库位"); + query.setAreaId(areaId); + query.setWareArea("C"); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + return locationMapper.selNextLocation(query); + } + return canUseLocations2; + } + return canUseLocations; + } else if (Objects.equals(appOrderIn.getWareHouse(), "B")) { + Location query = new Location(); + query.setAreaId(areaId); + query.setWareArea("B"); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + List canUseLocations = locationMapper.selNextLocation(query); + if(canUseLocations.isEmpty()){ + log.info("B级优先级没有可用库位,开始寻找C级库位"); + query.setAreaId(areaId); + query.setWareArea("C"); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + return locationMapper.selNextLocation(query); + } + return canUseLocations; + } else if (Objects.equals(appOrderIn.getWareHouse(), "C")) { + Location query = new Location(); + query.setAreaId(areaId); + query.setWareArea(appOrderIn.getWareHouse()); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + return locationMapper.selNextLocation(query); + }else{ + return null; + } + + } + + /** + * 在一堆空闲的库位中寻找一个可用的入库库位 + * @param canUseLocations 可用的库位 + * @return 可用的库位,若没有可用的库位则返回 null + */ + public Location checkCanUse(List canUseLocations) { + if(canUseLocations == null || canUseLocations.isEmpty()) { + return null; + } + for (Location location : canUseLocations) { + if(location.getDepth() == 1) { + return location; // 1 深度的不需要检验 + } + /* 校验此位置是否有遮挡 */ /* 如果这位置有库存(可能出现记错导致有库存),或者这位置其他深度(不论深度大小)有任务则不采用此位置 */ + /* 1 判断库存 */ + Stock checkStock = new Stock(); + checkStock.setLocationId(location.getLocationId()); + List checkResult = stockMapper.selStocks(checkStock); + if(!checkResult.isEmpty()) { + continue; // 库存不为空,跳过 + } + /* 2 判断同位置不同深度是否有任务 */ + // 找出此位置不同深度的库位 + Location queryDifferentDepthLocation = new Location(); + queryDifferentDepthLocation.setAreaId(location.getAreaId()); + queryDifferentDepthLocation.setEquipmentId(location.getEquipmentId()); + queryDifferentDepthLocation.setQueue(location.getQueue()); + queryDifferentDepthLocation.setLine(location.getLine()); + queryDifferentDepthLocation.setLayer(location.getLayer()); + List differentDepthLocations = locationMapper.selLocations(queryDifferentDepthLocation); + if(differentDepthLocations == null) { + continue; // 数据库查询失败 + } + boolean canUse = false; // 指示当前库位是否可用,若可用会置成 true + if(!differentDepthLocations.isEmpty()) { + // 存在干涉库位,检验其是否有未完成的任务 + for (Location differentDepthLocation : differentDepthLocations) { + // 找出此位置不同深度的库位 + Location queryLocationTask = new Location(); + queryLocationTask.setLocationId(differentDepthLocation.getLocationId()); + List locationTasks = taskMapper.haveNotCompleteTask(differentDepthLocation.getLocationId()); + if(locationTasks == null) { + continue; // 数据库查询失败 + } + if(!locationTasks.isEmpty()) { + break; // 有任务这个库位不行 + } + } + canUse = true; + } + if(canUse) { + return location; + } + } + return null; + } + + + +} diff --git a/wms_serve/src/main/java/com/wms/utils/storage/StockUtils.java b/wms_serve/src/main/java/com/wms/utils/storage/StockUtils.java new file mode 100644 index 0000000..091a15c --- /dev/null +++ b/wms_serve/src/main/java/com/wms/utils/storage/StockUtils.java @@ -0,0 +1,29 @@ +package com.wms.utils.storage; + +import com.wms.entity.table.Stock; + +import java.util.List; + +/** + * 库存工具类 + */ +public class StockUtils { + + /** + * 获取库存列表的总可用库存 + * @param stocks 库存列表 + * @return 可用库存总数 + */ + public static Integer sumStcokAvailableNum(List stocks) { + if(stocks == null) { + return null; + } + Integer sum = 0; + for(Stock stock : stocks) { + sum += stock.getAvailableNum(); + } + return sum; + } + + +} diff --git a/wms_serve/src/main/resources/application.yml b/wms_serve/src/main/resources/application.yml new file mode 100644 index 0000000..51a8e96 --- /dev/null +++ b/wms_serve/src/main/resources/application.yml @@ -0,0 +1,42 @@ +spring: + # 本地测试环境 +# datasource: +# url: jdbc:mysql://localhost:3306/wms_fdbk_xuzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true +# username: root +# password: 123456 + + # 在线环境 + datasource: + url: jdbc:mysql://192.168.16.53:3306/wms_fdbk_xuzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + username: developer + password: developer + + profiles: + active: online +server: + # 服务端配置 + port: 19990 + servlet: + # 接口地址 + context-path: / + encoding: + charset: utf-8 + enabled: true + force: true + + +mybatis: + config-location: classpath:mybatis-config.xml + mapper-locations: classpath:mapper/*.xml + type-aliases-package: com.wms.entity.table + +logging: + config: classpath:logback-spring.xml + +#mybatis 分页插件 +#pagehelper: +# helperDialect: mysql +# reasonable: true +# supportMethodsArguments: true +# params: count=countSql + diff --git a/wms_serve/src/main/resources/logback-spring.xml b/wms_serve/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..005203d --- /dev/null +++ b/wms_serve/src/main/resources/logback-spring.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + ${LOG_HOME}/info/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log + + 10MB + + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + INFO + ACCEPT + DENY + + + + + + ${LOG_HOME}/warning/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log + + 10MB + + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + WARNING + ACCEPT + DENY + + + + + + ${LOG_HOME}/error/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log + + 10MB + + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + ERROR + ACCEPT + DENY + + + + + + ${LOG_HOME}/debug/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.%i.log + + 10MB + + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + DEBUG + ACCEPT + DENY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wms_serve/src/main/resources/mapper/AppOrderInMapper.xml b/wms_serve/src/main/resources/mapper/AppOrderInMapper.xml new file mode 100644 index 0000000..5770092 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/AppOrderInMapper.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_app_order_in + (row_id, guid, in_type, batch_no, vehicle_no, goods_id, goods_num, + ware_house, order_status, create_time, create_person, update_time, remark, production_date) + values (#{rowId}, #{guid}, #{inType}, #{batchNo}, #{vehicleNo}, #{goodsId}, #{goodsNum}, + #{wareHouse}, #{orderStatus}, #{createTime}, #{createPerson}, #{updateTime}, #{remark}, #{productionDate}) + + + + + insert into tbl_app_order_in(row_id, guid, in_type, batch_no, vehicle_no, goods_id, goods_num, + ware_house, order_status, create_time, create_person, update_time, remark) + values + + (#{rowId}, #{guid}, #{inType}, #{batchNo}, #{vehicleNo}, #{goodsId}, #{goodsNum}, + #{wareHouse}, #{orderStatus}, #{createTime}, #{createPerson}, #{updateTime}, #{remark}) + + + + + update tbl_app_order_in + + guid = #{guid}, + in_type = #{inType}, + batch_no = #{batchNo}, + vehicle_no = #{vehicleNo}, + goods_id = #{goodsId}, + goods_num = #{goodsNum}, + ware_house = #{wareHouse}, + order_status = #{orderStatus}, + create_person = #{createPerson}, + update_time = #{updateTime}, + remark = #{remark}, + create_time = #{createTime}, + production_date = #{productionDate}, + + where row_id = #{rowId} + + + + + delete from tbl_app_order_in where row_id = #{rowId} + + + + + + + + + + + + + + + + + + + update tbl_app_order_in + set order_status = #{orderStatus} + where vehicle_no = #{vehicleNo} + + + + + + delete from tbl_app_order_in where remark = #{remark} + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/ConfigMapper.xml b/wms_serve/src/main/resources/mapper/ConfigMapper.xml new file mode 100644 index 0000000..1aad51f --- /dev/null +++ b/wms_serve/src/main/resources/mapper/ConfigMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + update tbl_sys_config + set config_value = #{configValue} + where config_id = #{configId} + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/GoodsMapper.xml b/wms_serve/src/main/resources/mapper/GoodsMapper.xml new file mode 100644 index 0000000..550f8cd --- /dev/null +++ b/wms_serve/src/main/resources/mapper/GoodsMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + select goods_id, goods_name, goods_unit, item_id, item_type, inv_category, life_days, organization_id, + organization_code, last_update_time, last_update_user + from tbl_app_goods + + + + + + + + insert into tbl_app_goods + + goods_id, + goods_name, + goods_unit, + item_id, + item_type, + inv_category, + life_days, + organization_id, + organization_code, + last_update_time, + last_update_user, + + + #{goodsId}, + #{goodsName}, + #{goodsUnit}, + #{itemId}, + #{itemType}, + #{invCategory}, + #{lifeDays}, + #{organizationId}, + #{organizationCode}, + #{lastUpdateTime}, + #{lastUpdateUser}, + + + + + update tbl_app_goods + + goods_name = #{goodsName}, + goods_unit = #{goodsUnit}, + item_id = #{itemId}, + item_type = #{itemType}, + inv_category = #{invCategory}, + life_days = #{lifeDays}, + organization_id = #{organizationId}, + organization_code = #{organizationCode}, + last_update_time = #{lastUpdateTime}, + last_update_user = #{lastUpdateUser}, + + where goods_id = #{goodsId} + + + + delete from tbl_app_goods where goods_id = #{goodsId} + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/LocationMapper.xml b/wms_serve/src/main/resources/mapper/LocationMapper.xml new file mode 100644 index 0000000..5bf3148 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/LocationMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + select location_id, area_id, tunnel_id, equipment_id, location_type, queue, line, layer, depth, is_lock, location_status, vehicle_id, ware_area + from tbl_app_location + + + + + + + + + + + + insert into tbl_app_location + + location_id, + area_id, + tunnel_id, + equipment_id, + location_type, + queue, + line, + layer, + depth, + is_lock, + location_status, + vehicle_id, + + + #{locationId}, + #{areaId}, + #{tunnelId}, + #{equipmentId}, + #{locationType}, + #{queue}, + #{line}, + #{layer}, + #{depth}, + #{isLock}, + #{locationStatus}, + #{vehicleId}, + + + + + update tbl_app_location + + is_lock = #{isLock}, + location_status = #{locationStatus}, + vehicle_id = #{vehicleId}, + ware_area = #{wareArea}, + + where location_id = #{locationId} + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/MenuMapper.xml b/wms_serve/src/main/resources/mapper/MenuMapper.xml new file mode 100644 index 0000000..0be30d7 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/MenuMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/OrderCheckMapper.xml b/wms_serve/src/main/resources/mapper/OrderCheckMapper.xml new file mode 100644 index 0000000..c59250e --- /dev/null +++ b/wms_serve/src/main/resources/mapper/OrderCheckMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_app_order_check(record_id, check_id, warehouse, status, create_time, complete_time, remark) + values(#{recordId}, #{checkId}, #{warehouse}, #{status}, #{createTime}, #{completeTime}, #{remark}) + + + + + insert into tbl_app_order_check(record_id, check_id, warehouse, status, create_time, complete_time, remark) + values + + (#{item.recordId}, #{item.checkId}, #{item.warehouse}, #{item.status}, #{item.createTime}, #{item.completeTime}, #{item.remark}) + + + + + + delete from tbl_app_order_check where record_id = #{record_id} + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/OrderOutMapper.xml b/wms_serve/src/main/resources/mapper/OrderOutMapper.xml new file mode 100644 index 0000000..aef7834 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/OrderOutMapper.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_app_order_out(row_id, record_id, order_id, warehouse_origin, warehouse_destination, order_type, delivery_time, row_no, goods_id, goods_name, goods_num, unit, status, create_time, remark, batch_no) + values(#{rowId}, #{recordId}, #{orderId}, #{warehouseOrigin}, #{warehouseDestination}, #{orderType}, #{deliveryTime}, #{rowNo}, #{goodsId}, #{goodsName}, #{goodsNum}, #{unit}, #{status}, #{createTime}, #{remark}, #{batchNo}) + + + + + update tbl_app_order_out + + status = #{status}, + + where row_id = #{rowId} + + + + insert into tbl_app_order_out(row_id, record_id, order_id, warehouse_origin, warehouse_destination, order_type, delivery_time, row_no, goods_id, goods_name, goods_num, unit, status, create_time, remark) + values + + (#{item.rowId}, #{item.recordId}, #{item.orderId}, #{item.warehouseOrigin}, #{item.warehouseDestination}, #{item.orderType}, + #{item.deliveryTime}, #{item.rowNo}, #{item.goodsId}, + #{item.goodsName}, #{item.goodsNum}, #{item.unit}, + #{item.status}, #{item.createTime}, #{item.remark}) + + + + + + delete from tbl_app_order_out where row_id = #{rowId} + + + + + + + + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/PartInfoMapper.xml b/wms_serve/src/main/resources/mapper/PartInfoMapper.xml new file mode 100644 index 0000000..9cc8e11 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/PartInfoMapper.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select Material, ItemDesc, Category, CategoryRemark, Unload_Place, Kitting_Point, Property, Vendor_ID, Data_Owner, + Part_Weight, Storage_Location, Storage_Type, Storage_Bin, Vendor_Name_EN, Vendor_Country, UpdateDate, + SLED, Vendor_Name_CN + from tbl_app_part_info + + + + + + + + insert into tbl_app_part_info + + Material, + ItemDesc, + Category, + CategoryRemark, + Unload_Place, + Kitting_Point, + Property, + Vendor_ID, + Data_Owner, + Part_Weight, + Storage_Location, + Storage_Type, + Storage_Bin, + Vendor_Name_EN, + Vendor_Country, + UpdateDate, + SLED, + Vendor_Name_CN, + + + #{material}, + #{itemDesc}, + #{category}, + #{categoryRemark}, + #{unloadPlace}, + #{kittingPoint}, + #{property}, + #{vendorId}, + #{dataOwner}, + #{partWeight}, + #{storageLocation}, + #{storageType}, + #{storageBin}, + #{vendorNameEN}, + #{vendorCountry}, + #{updateDate}, + #{SLED}, + #{vendorNameCN}, + + + + + update tbl_app_part_info + + ItemDesc = #{itemDesc}, + Category = #{category}, + CategoryRemark = #{categoryRemark}, + Unload_Place = #{unloadPlace}, + Kitting_Point = #{kittingPoint}, + Property = #{property}, + Vendor_ID = #{vendorId}, + Data_Owner = #{dataOwner}, + Part_Weight = #{partWeight}, + Storage_Location = #{storageLocation}, + Storage_Type = #{storageType}, + Storage_Bin = #{storageBin}, + Vendor_Name_EN = #{vendorNameEN}, + Vendor_Country = #{vendorCountry}, + UpdateDate = #{updateDate}, + SLED = #{SLED}, + Vendor_Name_CN = #{vendorNameCN}, + + where Material = #{material} + + + + delete from tbl_app_part_info where Material = #{material} + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/StandMapper.xml b/wms_serve/src/main/resources/mapper/StandMapper.xml new file mode 100644 index 0000000..f534bb1 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/StandMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + select stand_id, allow_in, allow_out, task_id, is_lock, stand_status, equipment_id, area_id, stand_type, stand_ip + from tbl_app_stand + + + + + + + + insert into tbl_app_stand + + stand_id, + allow_in, + allow_out, + task_id, + is_lock, + stand_status, + equipment_id, + area_id, + stand_type, + stand_ip, + + + #{standId}, + #{allowIn}, + #{allowOut}, + #{taskId}, + #{isLock}, + #{standStatus}, + #{equipmentId}, + #{areaId}, + #{standType}, + #{standIp}, + + + + + update tbl_app_stand + + allow_in = #{allowIn}, + allow_out = #{allowOut}, + task_id = #{taskId}, + is_lock = #{isLock}, + stand_status = #{standStatus}, + equipment_id = #{equipmentId}, + area_id = #{areaId}, + stand_type = #{standType}, + stand_ip = #{standIp}, + + where stand_id = #{standId} + + + + delete from tbl_app_stand where stand_id = #{standId} + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/StockMapper.xml b/wms_serve/src/main/resources/mapper/StockMapper.xml new file mode 100644 index 0000000..62728b7 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/StockMapper.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select stock_id, warehouse_name, location_id, vehicle_id, goods_id, goods_name, batch_no, available_num, remain_num, real_num, provider_id, + provider_name, production_date, expiration_date, stock_status, goods_status, create_time, last_update_time, last_update_user, remark, + is_inventory, inventory_task_id, current_location, shelf_life + from tbl_app_stock + + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_app_stock + + stock_id, + warehouse_name, + location_id, + vehicle_id, + goods_id, + goods_name, + batch_no, + remain_num, + available_num, + real_num, + provider_id, + provider_name, + production_date, + expiration_date, + stock_status, + goods_status, + create_time, + last_update_time, + last_update_user, + remark, + is_inventory, + inventory_task_id, + current_location, + shelf_life, + + + #{stockId}, + #{warehouseName}, + #{locationId}, + #{vehicleId}, + #{goodsId}, + #{goodsName}, + #{batchNo}, + #{remainNum}, + #{availableNum}, + #{realNum}, + #{providerId}, + #{providerName}, + #{productionDate}, + #{expirationDate}, + #{stockStatus}, + #{goodsStatus}, + #{createTime}, + #{lastUpdateTime}, + #{lastUpdateUser}, + #{remark}, + #{isInventory}, + #{inventoryTaskId}, + #{currentLocation}, + #{shelfLife}, + + + + + update tbl_app_stock + + location_id = #{locationId}, + vehicle_id = #{vehicleId}, + goods_id = #{goodsId}, + goods_name = #{goodsName}, + batch_no = #{batchNo}, + remain_num = #{remainNum}, + available_num = #{availableNum}, + real_num = #{realNum}, + provider_id = #{providerId}, + provider_name = #{providerName}, + production_date = #{productionDate}, + expiration_date = #{expirationDate}, + stock_status = #{stockStatus}, + goods_status = #{goodsStatus}, + create_time = #{createTime}, + last_update_time = #{lastUpdateTime}, + last_update_user = #{lastUpdateUser}, + remark = #{remark}, + is_inventory = #{isInventory}, + inventory_task_id = #{inventoryTaskId}, + current_location = #{currentLocation}, + shelf_life = #{shelfLife}, + + where stock_id = #{stockId} + + + + update tbl_app_stock set location_id = #{newLocationId} where location_id = #{oldLocationId} + + + update tbl_app_stock set location_id = #{newLocationId}, stock_status = #{status} where location_id = #{oldLocationId} + + + + + + + + + + + update tbl_app_stock set available_num = real_num; + + + + + delete from tbl_app_stock where stock_id = #{stockId} + + + + + delete from tbl_app_stock where location_id = #{locationId} + + + + update tbl_app_stock set stock_status = #{status} where location_id = #{locationId} + + + + update tbl_app_stock set available_num = #{availableNum} where stock_id = #{stockId} + + + + + update tbl_app_stock set production_date = #{productionDate} where stock_id = #{stockId} + + + + + + update tbl_app_stock set location_id = #{locationId} where batch_no = #{batchNo} + + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/TaskMapper.xml b/wms_serve/src/main/resources/mapper/TaskMapper.xml new file mode 100644 index 0000000..8e6d814 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/TaskMapper.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select task_id, task_type, task_status, task_group, origin, destination, pick_stand, weight, vehicle_no, vehicle_size, + create_time, user_name, goods_id, goods_name, operate_num, total_num, etag_location, task_priority, + production_date, expiration_date, kate_task_id, remark1 + from tbl_app_task + + + + + + + + + insert into tbl_app_task + + task_id, + task_type, + task_status, + task_group, + origin, + destination, + pick_stand, + weight, + vehicle_no, + vehicle_size, + create_time, + user_name, + goods_id, + goods_name, + operate_num, + total_num, + etag_location, + task_priority, + production_date, + expiration_date, + kate_task_id, + remark1, + + + #{taskId}, + #{taskType}, + #{taskStatus}, + #{taskGroup}, + #{origin}, + #{destination}, + #{pickStand}, + #{weight}, + #{vehicleNo}, + #{vehicleSize}, + #{createTime}, + #{userName}, + #{goodsId}, + #{goodsName}, + #{operateNum}, + #{totalNum}, + #{etagLocation}, + #{taskPriority}, + #{productionDate}, + #{expirationDate}, + #{kateTaskId}, + #{remark1}, + + + + + insert into tbl_app_task(task_id, task_type, task_status, task_group, origin, + destination, pick_stand, weight, vehicle_no, vehicle_size, + create_time, user_name, goods_id, goods_name, operate_num, + total_num, etag_location, task_priority, production_date, + expiration_date, kate_task_id, remark1) values + + (#{item.taskId}, #{item.taskType}, #{item.taskStatus}, #{item.taskGroup}, #{item.origin}, + #{item.destination}, #{item.pickStand}, #{item.weight}, #{item.vehicleNo}, #{item.vehicleSize}, + #{item.createTime}, #{item.userName}, #{item.goodsId}, #{item.goodsName}, #{item.operateNum}, + #{item.totalNum}, #{item.etagLocation}, #{item.taskPriority}, #{item.productionDate}, + #{item.expirationDate}, #{item.kateTaskId}, #{item.remark1}) + + + + + update tbl_app_task + + task_type = #{taskType}, + task_status = #{taskStatus}, + task_group = #{taskGroup}, + origin = #{origin}, + destination = #{destination}, + pick_stand = #{pickStand}, + weight = #{weight}, + vehicle_no = #{vehicleNo}, + vehicle_size = #{vehicleSize}, + create_time = #{createTime}, + user_name = #{userName}, + goods_id = #{goodsId}, + goods_name = #{goodsName}, + operate_num = #{operateNum}, + total_num = #{totalNum}, + etag_location = #{etagLocation}, + task_priority = #{taskPriority}, + production_date = #{productionDate}, + expiration_date = #{expirationDate}, + kate_task_id = #{kateTaskId}, + remark1 = #{remark1}, + + where task_id = #{taskId} + + + + delete from tbl_app_task where task_id = #{taskId} + + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/TaskRecordMapper.xml b/wms_serve/src/main/resources/mapper/TaskRecordMapper.xml new file mode 100644 index 0000000..077c445 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/TaskRecordMapper.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select task_id, task_type, task_status, task_group, origin, destination, pick_stand, weight, vehicle_no, vehicle_size, + create_time, user_name, goods_id, goods_name, operate_num, total_num, etag_location, task_priority, + production_date, expiration_date, kate_task_id, finish_time, remark1 + from tbl_app_task_bak + + + + + + insert into tbl_app_task_bak + + task_id, + task_type, + task_status, + task_group, + origin, + destination, + pick_stand, + weight, + vehicle_no, + vehicle_size, + create_time, + user_name, + goods_id, + goods_name, + operate_num, + total_num, + etag_location, + task_priority, + production_date, + expiration_date, + kate_task_id, + finish_time, + remark1, + + + #{taskId}, + #{taskType}, + #{taskStatus}, + #{taskGroup}, + #{origin}, + #{destination}, + #{pickStand}, + #{weight}, + #{vehicleNo}, + #{vehicleSize}, + #{createTime}, + #{userName}, + #{goodsId}, + #{goodsName}, + #{operateNum}, + #{totalNum}, + #{etagLocation}, + #{taskPriority}, + #{productionDate}, + #{expirationDate}, + #{kateTaskId}, + #{finishTime}, + #{remark1}, + + + + + update tbl_app_task_bak + + task_type = #{taskType}, + task_status = #{taskStatus}, + task_group = #{taskGroup}, + origin = #{origin}, + destination = #{destination}, + pick_stand = #{pickStand}, + weight = #{weight}, + vehicle_no = #{vehicleNo}, + vehicle_size = #{vehicleSize}, + create_time = #{createTime}, + user_name = #{userName}, + goods_id = #{goodsId}, + goods_name = #{goodsName}, + operate_num = #{operateNum}, + total_num = #{totalNum}, + etag_location = #{etagLocation}, + task_priority = #{taskPriority}, + task_priority = #{productionDate}, + expiration_date = #{expirationDate}, + kate_task_id = #{kateTaskId}, + finish_time = #{finishTime}, + remark1 = #{remark1}, + + where task_id = #{taskId} + + + + delete from tbl_app_task_bak where task_id = #{taskId} + + + + delete from tbl_app_task_bak where finish_time < date_add(curdate(),INTERVAL -7 DAY) and task_type != 3 + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/UserMapper.xml b/wms_serve/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..9b7bf82 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mapper/VehicleMapper.xml b/wms_serve/src/main/resources/mapper/VehicleMapper.xml new file mode 100644 index 0000000..cd24df1 --- /dev/null +++ b/wms_serve/src/main/resources/mapper/VehicleMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + select vehicle_id, current_location, vehicle_status, is_empty + from tbl_app_vehicle + + + + + + + + insert into tbl_app_vehicle + + vehicle_id, + current_location, + vehicle_status, + is_empty, + + + #{vehicleId}, + #{currentLocation}, + #{vehicleStatus}, + #{isEmpty}, + + + + + update tbl_app_vehicle + + current_location = #{currentLocation}, + vehicle_status = #{vehicleStatus}, + is_empty = #{isEmpty}, + + where vehicle_id = #{vehicleId} + + + + delete from tbl_app_vehicle where vehicle_id = #{vehicleId} + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/mybatis-config.xml b/wms_serve/src/main/resources/mybatis-config.xml new file mode 100644 index 0000000..91ea525 --- /dev/null +++ b/wms_serve/src/main/resources/mybatis-config.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wms_serve/src/main/resources/sql/wms_bk_xuzhou.sql b/wms_serve/src/main/resources/sql/wms_bk_xuzhou.sql new file mode 100644 index 0000000..eb2c387 --- /dev/null +++ b/wms_serve/src/main/resources/sql/wms_bk_xuzhou.sql @@ -0,0 +1,1598 @@ +/* + Navicat Premium Data Transfer + + Source Server : 本地数据库 + Source Server Type : MySQL + Source Server Version : 80032 (8.0.32) + Source Host : localhost:3306 + Source Schema : wms_bk_xuzhou + + Target Server Type : MySQL + Target Server Version : 80032 (8.0.32) + File Encoding : 65001 + + Date: 15/03/2024 14:03:24 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for tbl_app_goods +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_goods`; +CREATE TABLE `tbl_app_goods` ( + `goods_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '物料编号', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `goods_unit` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '单位', + `item_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料id', + `item_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料类别', + `inv_category` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库存类别', + `life_days` int NULL DEFAULT NULL COMMENT '存储天数', + `organization_id` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库存组织id', + `organization_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库存组织代码', + `last_update_time` datetime NULL DEFAULT NULL COMMENT '最后更新时间', + `last_update_user` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最后更新用户', + PRIMARY KEY (`goods_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_goods +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_app_location +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_location`; +CREATE TABLE `tbl_app_location` ( + `location_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '库位编号', + `area_id` int NULL DEFAULT NULL COMMENT '区域编号', + `tunnel_id` int NULL DEFAULT NULL COMMENT '巷道编号', + `equipment_id` int NULL DEFAULT NULL COMMENT '设备编号', + `location_type` int NULL DEFAULT NULL COMMENT '库位类型', + `queue` int NULL DEFAULT NULL COMMENT '排', + `line` int NULL DEFAULT NULL COMMENT '列', + `layer` int NULL DEFAULT NULL COMMENT '层', + `depth` int NULL DEFAULT NULL COMMENT '深度', + `is_lock` int NULL DEFAULT NULL COMMENT '库位是否锁定(0:未锁定,1:锁定)', + `location_status` int NULL DEFAULT NULL COMMENT '库位状态(0:空闲,1:占用)', + `vehicle_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '载具编号', + PRIMARY KEY (`location_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_location +-- ---------------------------- +INSERT INTO `tbl_app_location` VALUES ('010101', 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010102', 1, 1, 1, 0, 1, 1, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010103', 1, 1, 1, 0, 1, 1, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010104', 1, 1, 1, 0, 1, 1, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010105', 1, 1, 1, 0, 1, 1, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010106', 1, 1, 1, 0, 1, 1, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010107', 1, 1, 1, 0, 1, 1, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010108', 1, 1, 1, 0, 1, 1, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010109', 1, 1, 1, 0, 1, 1, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010110', 1, 1, 1, 0, 1, 1, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010111', 1, 1, 1, 0, 1, 1, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010112', 1, 1, 1, 0, 1, 1, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010201', 1, 1, 1, 0, 1, 2, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010202', 1, 1, 1, 0, 1, 2, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010203', 1, 1, 1, 0, 1, 2, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010204', 1, 1, 1, 0, 1, 2, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010205', 1, 1, 1, 0, 1, 2, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010206', 1, 1, 1, 0, 1, 2, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010207', 1, 1, 1, 0, 1, 2, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010208', 1, 1, 1, 0, 1, 2, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010209', 1, 1, 1, 0, 1, 2, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010210', 1, 1, 1, 0, 1, 2, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010211', 1, 1, 1, 0, 1, 2, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010212', 1, 1, 1, 0, 1, 2, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010301', 1, 1, 1, 0, 1, 3, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010302', 1, 1, 1, 0, 1, 3, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010303', 1, 1, 1, 0, 1, 3, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010304', 1, 1, 1, 0, 1, 3, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010305', 1, 1, 1, 0, 1, 3, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010306', 1, 1, 1, 0, 1, 3, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010307', 1, 1, 1, 0, 1, 3, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010308', 1, 1, 1, 0, 1, 3, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010309', 1, 1, 1, 0, 1, 3, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010310', 1, 1, 1, 0, 1, 3, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010311', 1, 1, 1, 0, 1, 3, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010312', 1, 1, 1, 0, 1, 3, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010401', 1, 1, 1, 0, 1, 4, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010402', 1, 1, 1, 0, 1, 4, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010403', 1, 1, 1, 0, 1, 4, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010404', 1, 1, 1, 0, 1, 4, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010405', 1, 1, 1, 0, 1, 4, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010406', 1, 1, 1, 0, 1, 4, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010407', 1, 1, 1, 0, 1, 4, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010408', 1, 1, 1, 0, 1, 4, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010409', 1, 1, 1, 0, 1, 4, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010410', 1, 1, 1, 0, 1, 4, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010411', 1, 1, 1, 0, 1, 4, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010412', 1, 1, 1, 0, 1, 4, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010501', 1, 1, 1, 0, 1, 5, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010502', 1, 1, 1, 0, 1, 5, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010503', 1, 1, 1, 0, 1, 5, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010504', 1, 1, 1, 0, 1, 5, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010505', 1, 1, 1, 0, 1, 5, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010506', 1, 1, 1, 0, 1, 5, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010507', 1, 1, 1, 0, 1, 5, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010508', 1, 1, 1, 0, 1, 5, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010509', 1, 1, 1, 0, 1, 5, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010510', 1, 1, 1, 0, 1, 5, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010511', 1, 1, 1, 0, 1, 5, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010512', 1, 1, 1, 0, 1, 5, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010601', 1, 1, 1, 0, 1, 6, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010602', 1, 1, 1, 0, 1, 6, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010603', 1, 1, 1, 0, 1, 6, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010604', 1, 1, 1, 0, 1, 6, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010605', 1, 1, 1, 0, 1, 6, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010606', 1, 1, 1, 0, 1, 6, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010607', 1, 1, 1, 0, 1, 6, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010608', 1, 1, 1, 0, 1, 6, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010609', 1, 1, 1, 0, 1, 6, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010610', 1, 1, 1, 0, 1, 6, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010611', 1, 1, 1, 0, 1, 6, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010612', 1, 1, 1, 0, 1, 6, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010701', 1, 1, 1, 0, 1, 7, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010702', 1, 1, 1, 0, 1, 7, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010703', 1, 1, 1, 0, 1, 7, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010704', 1, 1, 1, 0, 1, 7, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010705', 1, 1, 1, 0, 1, 7, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010706', 1, 1, 1, 0, 1, 7, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010707', 1, 1, 1, 0, 1, 7, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010708', 1, 1, 1, 0, 1, 7, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010709', 1, 1, 1, 0, 1, 7, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010710', 1, 1, 1, 0, 1, 7, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010711', 1, 1, 1, 0, 1, 7, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010712', 1, 1, 1, 0, 1, 7, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010801', 1, 1, 1, 0, 1, 8, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010802', 1, 1, 1, 0, 1, 8, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010803', 1, 1, 1, 0, 1, 8, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010804', 1, 1, 1, 0, 1, 8, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010805', 1, 1, 1, 0, 1, 8, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010806', 1, 1, 1, 0, 1, 8, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010807', 1, 1, 1, 0, 1, 8, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010808', 1, 1, 1, 0, 1, 8, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010809', 1, 1, 1, 0, 1, 8, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010810', 1, 1, 1, 0, 1, 8, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010811', 1, 1, 1, 0, 1, 8, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010812', 1, 1, 1, 0, 1, 8, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010901', 1, 1, 1, 0, 1, 9, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010902', 1, 1, 1, 0, 1, 9, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010903', 1, 1, 1, 0, 1, 9, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010904', 1, 1, 1, 0, 1, 9, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010905', 1, 1, 1, 0, 1, 9, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010906', 1, 1, 1, 0, 1, 9, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010907', 1, 1, 1, 0, 1, 9, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010908', 1, 1, 1, 0, 1, 9, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010909', 1, 1, 1, 0, 1, 9, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010910', 1, 1, 1, 0, 1, 9, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010911', 1, 1, 1, 0, 1, 9, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('010912', 1, 1, 1, 0, 1, 9, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011001', 1, 1, 1, 0, 1, 10, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011002', 1, 1, 1, 0, 1, 10, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011003', 1, 1, 1, 0, 1, 10, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011004', 1, 1, 1, 0, 1, 10, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011005', 1, 1, 1, 0, 1, 10, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011006', 1, 1, 1, 0, 1, 10, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011007', 1, 1, 1, 0, 1, 10, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011008', 1, 1, 1, 0, 1, 10, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011009', 1, 1, 1, 0, 1, 10, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011010', 1, 1, 1, 0, 1, 10, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011011', 1, 1, 1, 0, 1, 10, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011012', 1, 1, 1, 0, 1, 10, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011101', 1, 1, 1, 0, 1, 11, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011102', 1, 1, 1, 0, 1, 11, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011103', 1, 1, 1, 0, 1, 11, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011104', 1, 1, 1, 0, 1, 11, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011105', 1, 1, 1, 0, 1, 11, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011106', 1, 1, 1, 0, 1, 11, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011107', 1, 1, 1, 0, 1, 11, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011108', 1, 1, 1, 0, 1, 11, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011109', 1, 1, 1, 0, 1, 11, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011110', 1, 1, 1, 0, 1, 11, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011111', 1, 1, 1, 0, 1, 11, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011112', 1, 1, 1, 0, 1, 11, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011201', 1, 1, 1, 0, 1, 12, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011202', 1, 1, 1, 0, 1, 12, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011203', 1, 1, 1, 0, 1, 12, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011204', 1, 1, 1, 0, 1, 12, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011205', 1, 1, 1, 0, 1, 12, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011206', 1, 1, 1, 0, 1, 12, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011207', 1, 1, 1, 0, 1, 12, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011208', 1, 1, 1, 0, 1, 12, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011209', 1, 1, 1, 0, 1, 12, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011210', 1, 1, 1, 0, 1, 12, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011211', 1, 1, 1, 0, 1, 12, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011212', 1, 1, 1, 0, 1, 12, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011301', 1, 1, 1, 0, 1, 13, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011302', 1, 1, 1, 0, 1, 13, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011303', 1, 1, 1, 0, 1, 13, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011304', 1, 1, 1, 0, 1, 13, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011305', 1, 1, 1, 0, 1, 13, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011306', 1, 1, 1, 0, 1, 13, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011307', 1, 1, 1, 0, 1, 13, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011308', 1, 1, 1, 0, 1, 13, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011309', 1, 1, 1, 0, 1, 13, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011310', 1, 1, 1, 0, 1, 13, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011311', 1, 1, 1, 0, 1, 13, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011312', 1, 1, 1, 0, 1, 13, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011401', 1, 1, 1, 0, 1, 14, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011402', 1, 1, 1, 0, 1, 14, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011403', 1, 1, 1, 0, 1, 14, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011404', 1, 1, 1, 0, 1, 14, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011405', 1, 1, 1, 0, 1, 14, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011406', 1, 1, 1, 0, 1, 14, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011407', 1, 1, 1, 0, 1, 14, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011408', 1, 1, 1, 0, 1, 14, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011409', 1, 1, 1, 0, 1, 14, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011410', 1, 1, 1, 0, 1, 14, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011411', 1, 1, 1, 0, 1, 14, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011412', 1, 1, 1, 0, 1, 14, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011501', 1, 1, 1, 0, 1, 15, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011502', 1, 1, 1, 0, 1, 15, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011503', 1, 1, 1, 0, 1, 15, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011504', 1, 1, 1, 0, 1, 15, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011505', 1, 1, 1, 0, 1, 15, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011506', 1, 1, 1, 0, 1, 15, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011507', 1, 1, 1, 0, 1, 15, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011508', 1, 1, 1, 0, 1, 15, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011509', 1, 1, 1, 0, 1, 15, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011510', 1, 1, 1, 0, 1, 15, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011511', 1, 1, 1, 0, 1, 15, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011512', 1, 1, 1, 0, 1, 15, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011601', 1, 1, 1, 0, 1, 16, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011602', 1, 1, 1, 0, 1, 16, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011603', 1, 1, 1, 0, 1, 16, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011604', 1, 1, 1, 0, 1, 16, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011605', 1, 1, 1, 0, 1, 16, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011606', 1, 1, 1, 0, 1, 16, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011607', 1, 1, 1, 0, 1, 16, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011608', 1, 1, 1, 0, 1, 16, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011609', 1, 1, 1, 0, 1, 16, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011610', 1, 1, 1, 0, 1, 16, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011611', 1, 1, 1, 0, 1, 16, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011612', 1, 1, 1, 0, 1, 16, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011701', 1, 1, 1, 0, 1, 17, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011702', 1, 1, 1, 0, 1, 17, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011703', 1, 1, 1, 0, 1, 17, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011704', 1, 1, 1, 0, 1, 17, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011705', 1, 1, 1, 0, 1, 17, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011706', 1, 1, 1, 0, 1, 17, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011707', 1, 1, 1, 0, 1, 17, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011708', 1, 1, 1, 0, 1, 17, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011709', 1, 1, 1, 0, 1, 17, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011710', 1, 1, 1, 0, 1, 17, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011711', 1, 1, 1, 0, 1, 17, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011712', 1, 1, 1, 0, 1, 17, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011801', 1, 1, 1, 0, 1, 18, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011802', 1, 1, 1, 0, 1, 18, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011803', 1, 1, 1, 0, 1, 18, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011804', 1, 1, 1, 0, 1, 18, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011805', 1, 1, 1, 0, 1, 18, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011806', 1, 1, 1, 0, 1, 18, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011807', 1, 1, 1, 0, 1, 18, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011808', 1, 1, 1, 0, 1, 18, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011809', 1, 1, 1, 0, 1, 18, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011810', 1, 1, 1, 0, 1, 18, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011811', 1, 1, 1, 0, 1, 18, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011812', 1, 1, 1, 0, 1, 18, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011901', 1, 1, 1, 0, 1, 19, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011902', 1, 1, 1, 0, 1, 19, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011903', 1, 1, 1, 0, 1, 19, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011904', 1, 1, 1, 0, 1, 19, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011905', 1, 1, 1, 0, 1, 19, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011906', 1, 1, 1, 0, 1, 19, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011907', 1, 1, 1, 0, 1, 19, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011908', 1, 1, 1, 0, 1, 19, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011909', 1, 1, 1, 0, 1, 19, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011910', 1, 1, 1, 0, 1, 19, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011911', 1, 1, 1, 0, 1, 19, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('011912', 1, 1, 1, 0, 1, 19, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012001', 1, 1, 1, 0, 1, 20, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012002', 1, 1, 1, 0, 1, 20, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012003', 1, 1, 1, 0, 1, 20, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012004', 1, 1, 1, 0, 1, 20, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012005', 1, 1, 1, 0, 1, 20, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012006', 1, 1, 1, 0, 1, 20, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012007', 1, 1, 1, 0, 1, 20, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012008', 1, 1, 1, 0, 1, 20, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012009', 1, 1, 1, 0, 1, 20, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012010', 1, 1, 1, 0, 1, 20, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012011', 1, 1, 1, 0, 1, 20, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012012', 1, 1, 1, 0, 1, 20, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012101', 1, 1, 1, 0, 1, 21, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012102', 1, 1, 1, 0, 1, 21, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012103', 1, 1, 1, 0, 1, 21, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012104', 1, 1, 1, 0, 1, 21, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012105', 1, 1, 1, 0, 1, 21, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012106', 1, 1, 1, 0, 1, 21, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012107', 1, 1, 1, 0, 1, 21, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012108', 1, 1, 1, 0, 1, 21, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012109', 1, 1, 1, 0, 1, 21, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012110', 1, 1, 1, 0, 1, 21, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012111', 1, 1, 1, 0, 1, 21, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012112', 1, 1, 1, 0, 1, 21, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012201', 1, 1, 1, 0, 1, 22, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012202', 1, 1, 1, 0, 1, 22, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012203', 1, 1, 1, 0, 1, 22, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012204', 1, 1, 1, 0, 1, 22, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012205', 1, 1, 1, 0, 1, 22, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012206', 1, 1, 1, 0, 1, 22, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012207', 1, 1, 1, 0, 1, 22, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012208', 1, 1, 1, 0, 1, 22, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012209', 1, 1, 1, 0, 1, 22, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012210', 1, 1, 1, 0, 1, 22, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012211', 1, 1, 1, 0, 1, 22, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012212', 1, 1, 1, 0, 1, 22, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012301', 1, 1, 1, 0, 1, 23, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012302', 1, 1, 1, 0, 1, 23, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012303', 1, 1, 1, 0, 1, 23, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012304', 1, 1, 1, 0, 1, 23, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012305', 1, 1, 1, 0, 1, 23, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012306', 1, 1, 1, 0, 1, 23, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012307', 1, 1, 1, 0, 1, 23, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012308', 1, 1, 1, 0, 1, 23, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012309', 1, 1, 1, 0, 1, 23, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012310', 1, 1, 1, 0, 1, 23, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012311', 1, 1, 1, 0, 1, 23, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012312', 1, 1, 1, 0, 1, 23, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012401', 1, 1, 1, 0, 1, 24, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012402', 1, 1, 1, 0, 1, 24, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012403', 1, 1, 1, 0, 1, 24, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012404', 1, 1, 1, 0, 1, 24, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012405', 1, 1, 1, 0, 1, 24, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012406', 1, 1, 1, 0, 1, 24, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012407', 1, 1, 1, 0, 1, 24, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012408', 1, 1, 1, 0, 1, 24, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012409', 1, 1, 1, 0, 1, 24, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012410', 1, 1, 1, 0, 1, 24, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012411', 1, 1, 1, 0, 1, 24, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012412', 1, 1, 1, 0, 1, 24, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012501', 1, 1, 1, 0, 1, 25, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012502', 1, 1, 1, 0, 1, 25, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012503', 1, 1, 1, 0, 1, 25, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012504', 1, 1, 1, 0, 1, 25, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012505', 1, 1, 1, 0, 1, 25, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012506', 1, 1, 1, 0, 1, 25, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012507', 1, 1, 1, 0, 1, 25, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012508', 1, 1, 1, 0, 1, 25, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012509', 1, 1, 1, 0, 1, 25, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012510', 1, 1, 1, 0, 1, 25, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012511', 1, 1, 1, 0, 1, 25, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012512', 1, 1, 1, 0, 1, 25, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012601', 1, 1, 1, 0, 1, 26, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012602', 1, 1, 1, 0, 1, 26, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012603', 1, 1, 1, 0, 1, 26, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012604', 1, 1, 1, 0, 1, 26, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012605', 1, 1, 1, 0, 1, 26, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012606', 1, 1, 1, 0, 1, 26, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012607', 1, 1, 1, 0, 1, 26, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012608', 1, 1, 1, 0, 1, 26, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012609', 1, 1, 1, 0, 1, 26, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012610', 1, 1, 1, 0, 1, 26, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012611', 1, 1, 1, 0, 1, 26, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012612', 1, 1, 1, 0, 1, 26, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012701', 1, 1, 1, 0, 1, 27, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012702', 1, 1, 1, 0, 1, 27, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012703', 1, 1, 1, 0, 1, 27, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012704', 1, 1, 1, 0, 1, 27, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012705', 1, 1, 1, 0, 1, 27, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012706', 1, 1, 1, 0, 1, 27, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012707', 1, 1, 1, 0, 1, 27, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012708', 1, 1, 1, 0, 1, 27, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012709', 1, 1, 1, 0, 1, 27, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012710', 1, 1, 1, 0, 1, 27, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012711', 1, 1, 1, 0, 1, 27, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012712', 1, 1, 1, 0, 1, 27, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012801', 1, 1, 1, 0, 1, 28, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012802', 1, 1, 1, 0, 1, 28, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012803', 1, 1, 1, 0, 1, 28, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012804', 1, 1, 1, 0, 1, 28, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012805', 1, 1, 1, 0, 1, 28, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012806', 1, 1, 1, 0, 1, 28, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012807', 1, 1, 1, 0, 1, 28, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012808', 1, 1, 1, 0, 1, 28, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012809', 1, 1, 1, 0, 1, 28, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012810', 1, 1, 1, 0, 1, 28, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012811', 1, 1, 1, 0, 1, 28, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012812', 1, 1, 1, 0, 1, 28, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012901', 1, 1, 1, 0, 1, 29, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012902', 1, 1, 1, 0, 1, 29, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012903', 1, 1, 1, 0, 1, 29, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012904', 1, 1, 1, 0, 1, 29, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012905', 1, 1, 1, 0, 1, 29, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012906', 1, 1, 1, 0, 1, 29, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012907', 1, 1, 1, 0, 1, 29, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012908', 1, 1, 1, 0, 1, 29, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012909', 1, 1, 1, 0, 1, 29, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012910', 1, 1, 1, 0, 1, 29, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012911', 1, 1, 1, 0, 1, 29, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('012912', 1, 1, 1, 0, 1, 29, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013001', 1, 1, 1, 0, 1, 30, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013002', 1, 1, 1, 0, 1, 30, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013003', 1, 1, 1, 0, 1, 30, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013004', 1, 1, 1, 0, 1, 30, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013005', 1, 1, 1, 0, 1, 30, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013006', 1, 1, 1, 0, 1, 30, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013007', 1, 1, 1, 0, 1, 30, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013008', 1, 1, 1, 0, 1, 30, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013009', 1, 1, 1, 0, 1, 30, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013010', 1, 1, 1, 0, 1, 30, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013011', 1, 1, 1, 0, 1, 30, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013012', 1, 1, 1, 0, 1, 30, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013101', 1, 1, 1, 0, 1, 31, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013102', 1, 1, 1, 0, 1, 31, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013103', 1, 1, 1, 0, 1, 31, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013104', 1, 1, 1, 0, 1, 31, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013105', 1, 1, 1, 0, 1, 31, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013106', 1, 1, 1, 0, 1, 31, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013107', 1, 1, 1, 0, 1, 31, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013108', 1, 1, 1, 0, 1, 31, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013109', 1, 1, 1, 0, 1, 31, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013110', 1, 1, 1, 0, 1, 31, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013111', 1, 1, 1, 0, 1, 31, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013112', 1, 1, 1, 0, 1, 31, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013201', 1, 1, 1, 0, 1, 32, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013202', 1, 1, 1, 0, 1, 32, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013203', 1, 1, 1, 0, 1, 32, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013204', 1, 1, 1, 0, 1, 32, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013205', 1, 1, 1, 0, 1, 32, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013206', 1, 1, 1, 0, 1, 32, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013207', 1, 1, 1, 0, 1, 32, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013208', 1, 1, 1, 0, 1, 32, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013209', 1, 1, 1, 0, 1, 32, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013210', 1, 1, 1, 0, 1, 32, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013211', 1, 1, 1, 0, 1, 32, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013212', 1, 1, 1, 0, 1, 32, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013301', 1, 1, 1, 0, 1, 33, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013302', 1, 1, 1, 0, 1, 33, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013303', 1, 1, 1, 0, 1, 33, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013304', 1, 1, 1, 0, 1, 33, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013305', 1, 1, 1, 0, 1, 33, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013306', 1, 1, 1, 0, 1, 33, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013307', 1, 1, 1, 0, 1, 33, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013308', 1, 1, 1, 0, 1, 33, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013309', 1, 1, 1, 0, 1, 33, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013310', 1, 1, 1, 0, 1, 33, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013311', 1, 1, 1, 0, 1, 33, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013312', 1, 1, 1, 0, 1, 33, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013401', 1, 1, 1, 0, 1, 34, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013402', 1, 1, 1, 0, 1, 34, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013403', 1, 1, 1, 0, 1, 34, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013404', 1, 1, 1, 0, 1, 34, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013405', 1, 1, 1, 0, 1, 34, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013406', 1, 1, 1, 0, 1, 34, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013407', 1, 1, 1, 0, 1, 34, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013408', 1, 1, 1, 0, 1, 34, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013409', 1, 1, 1, 0, 1, 34, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013410', 1, 1, 1, 0, 1, 34, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013411', 1, 1, 1, 0, 1, 34, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013412', 1, 1, 1, 0, 1, 34, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013501', 1, 1, 1, 0, 1, 35, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013502', 1, 1, 1, 0, 1, 35, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013503', 1, 1, 1, 0, 1, 35, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013504', 1, 1, 1, 0, 1, 35, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013505', 1, 1, 1, 0, 1, 35, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013506', 1, 1, 1, 0, 1, 35, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013507', 1, 1, 1, 0, 1, 35, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013508', 1, 1, 1, 0, 1, 35, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013509', 1, 1, 1, 0, 1, 35, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013510', 1, 1, 1, 0, 1, 35, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013511', 1, 1, 1, 0, 1, 35, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013512', 1, 1, 1, 0, 1, 35, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013601', 1, 1, 1, 0, 1, 36, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013602', 1, 1, 1, 0, 1, 36, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013603', 1, 1, 1, 0, 1, 36, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013604', 1, 1, 1, 0, 1, 36, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013605', 1, 1, 1, 0, 1, 36, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013606', 1, 1, 1, 0, 1, 36, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013607', 1, 1, 1, 0, 1, 36, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013608', 1, 1, 1, 0, 1, 36, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013609', 1, 1, 1, 0, 1, 36, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013610', 1, 1, 1, 0, 1, 36, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013611', 1, 1, 1, 0, 1, 36, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013612', 1, 1, 1, 0, 1, 36, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013701', 1, 1, 1, 0, 1, 37, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013702', 1, 1, 1, 0, 1, 37, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013703', 1, 1, 1, 0, 1, 37, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013704', 1, 1, 1, 0, 1, 37, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013705', 1, 1, 1, 0, 1, 37, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013706', 1, 1, 1, 0, 1, 37, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013707', 1, 1, 1, 0, 1, 37, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013708', 1, 1, 1, 0, 1, 37, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013709', 1, 1, 1, 0, 1, 37, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013710', 1, 1, 1, 0, 1, 37, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013711', 1, 1, 1, 0, 1, 37, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013712', 1, 1, 1, 0, 1, 37, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013801', 1, 1, 1, 0, 1, 38, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013802', 1, 1, 1, 0, 1, 38, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013803', 1, 1, 1, 0, 1, 38, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013804', 1, 1, 1, 0, 1, 38, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013805', 1, 1, 1, 0, 1, 38, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013806', 1, 1, 1, 0, 1, 38, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013807', 1, 1, 1, 0, 1, 38, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013808', 1, 1, 1, 0, 1, 38, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013809', 1, 1, 1, 0, 1, 38, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013810', 1, 1, 1, 0, 1, 38, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013811', 1, 1, 1, 0, 1, 38, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013812', 1, 1, 1, 0, 1, 38, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013901', 1, 1, 1, 0, 1, 39, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013902', 1, 1, 1, 0, 1, 39, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013903', 1, 1, 1, 0, 1, 39, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013904', 1, 1, 1, 0, 1, 39, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013905', 1, 1, 1, 0, 1, 39, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013906', 1, 1, 1, 0, 1, 39, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013907', 1, 1, 1, 0, 1, 39, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013908', 1, 1, 1, 0, 1, 39, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013909', 1, 1, 1, 0, 1, 39, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013910', 1, 1, 1, 0, 1, 39, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013911', 1, 1, 1, 0, 1, 39, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('013912', 1, 1, 1, 0, 1, 39, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014001', 1, 1, 1, 0, 1, 40, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014002', 1, 1, 1, 0, 1, 40, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014003', 1, 1, 1, 0, 1, 40, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014004', 1, 1, 1, 0, 1, 40, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014005', 1, 1, 1, 0, 1, 40, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014006', 1, 1, 1, 0, 1, 40, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014007', 1, 1, 1, 0, 1, 40, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014008', 1, 1, 1, 0, 1, 40, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014009', 1, 1, 1, 0, 1, 40, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014010', 1, 1, 1, 0, 1, 40, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014011', 1, 1, 1, 0, 1, 40, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014012', 1, 1, 1, 0, 1, 40, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014101', 1, 1, 1, 0, 1, 41, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014102', 1, 1, 1, 0, 1, 41, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014103', 1, 1, 1, 0, 1, 41, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014104', 1, 1, 1, 0, 1, 41, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014105', 1, 1, 1, 0, 1, 41, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014106', 1, 1, 1, 0, 1, 41, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014107', 1, 1, 1, 0, 1, 41, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014108', 1, 1, 1, 0, 1, 41, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014109', 1, 1, 1, 0, 1, 41, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014110', 1, 1, 1, 0, 1, 41, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014111', 1, 1, 1, 0, 1, 41, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014112', 1, 1, 1, 0, 1, 41, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014201', 1, 1, 1, 0, 1, 42, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014202', 1, 1, 1, 0, 1, 42, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014203', 1, 1, 1, 0, 1, 42, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014204', 1, 1, 1, 0, 1, 42, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014205', 1, 1, 1, 0, 1, 42, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014206', 1, 1, 1, 0, 1, 42, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014207', 1, 1, 1, 0, 1, 42, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014208', 1, 1, 1, 0, 1, 42, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014209', 1, 1, 1, 0, 1, 42, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014210', 1, 1, 1, 0, 1, 42, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014211', 1, 1, 1, 0, 1, 42, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014212', 1, 1, 1, 0, 1, 42, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014301', 1, 1, 1, 0, 1, 43, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014302', 1, 1, 1, 0, 1, 43, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014303', 1, 1, 1, 0, 1, 43, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014304', 1, 1, 1, 0, 1, 43, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014305', 1, 1, 1, 0, 1, 43, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014306', 1, 1, 1, 0, 1, 43, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014307', 1, 1, 1, 0, 1, 43, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014308', 1, 1, 1, 0, 1, 43, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014309', 1, 1, 1, 0, 1, 43, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014310', 1, 1, 1, 0, 1, 43, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014311', 1, 1, 1, 0, 1, 43, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014312', 1, 1, 1, 0, 1, 43, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014401', 1, 1, 1, 0, 1, 44, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014402', 1, 1, 1, 0, 1, 44, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014403', 1, 1, 1, 0, 1, 44, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014404', 1, 1, 1, 0, 1, 44, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014405', 1, 1, 1, 0, 1, 44, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014406', 1, 1, 1, 0, 1, 44, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014407', 1, 1, 1, 0, 1, 44, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014408', 1, 1, 1, 0, 1, 44, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014409', 1, 1, 1, 0, 1, 44, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014410', 1, 1, 1, 0, 1, 44, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014411', 1, 1, 1, 0, 1, 44, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014412', 1, 1, 1, 0, 1, 44, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014501', 1, 1, 1, 0, 1, 45, 1, 1, 0, 1, 'XZBK0001'); +INSERT INTO `tbl_app_location` VALUES ('014502', 1, 1, 1, 0, 1, 45, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014503', 1, 1, 1, 0, 1, 45, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014504', 1, 1, 1, 0, 1, 45, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014505', 1, 1, 1, 0, 1, 45, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014506', 1, 1, 1, 0, 1, 45, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014507', 1, 1, 1, 0, 1, 45, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014508', 1, 1, 1, 0, 1, 45, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014509', 1, 1, 1, 0, 1, 45, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014510', 1, 1, 1, 0, 1, 45, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014511', 1, 1, 1, 0, 1, 45, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('014512', 1, 1, 1, 0, 1, 45, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020101', 1, 1, 1, 0, 2, 1, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020102', 1, 1, 1, 0, 2, 1, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020103', 1, 1, 1, 0, 2, 1, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020104', 1, 1, 1, 0, 2, 1, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020105', 1, 1, 1, 0, 2, 1, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020106', 1, 1, 1, 0, 2, 1, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020107', 1, 1, 1, 0, 2, 1, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020108', 1, 1, 1, 0, 2, 1, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020109', 1, 1, 1, 0, 2, 1, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020110', 1, 1, 1, 0, 2, 1, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020111', 1, 1, 1, 0, 2, 1, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020112', 1, 1, 1, 0, 2, 1, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020201', 1, 1, 1, 0, 2, 2, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020202', 1, 1, 1, 0, 2, 2, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020203', 1, 1, 1, 0, 2, 2, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020204', 1, 1, 1, 0, 2, 2, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020205', 1, 1, 1, 0, 2, 2, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020206', 1, 1, 1, 0, 2, 2, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020207', 1, 1, 1, 0, 2, 2, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020208', 1, 1, 1, 0, 2, 2, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020209', 1, 1, 1, 0, 2, 2, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020210', 1, 1, 1, 0, 2, 2, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020211', 1, 1, 1, 0, 2, 2, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020212', 1, 1, 1, 0, 2, 2, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020301', 1, 1, 1, 0, 2, 3, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020302', 1, 1, 1, 0, 2, 3, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020303', 1, 1, 1, 0, 2, 3, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020304', 1, 1, 1, 0, 2, 3, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020305', 1, 1, 1, 0, 2, 3, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020306', 1, 1, 1, 0, 2, 3, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020307', 1, 1, 1, 0, 2, 3, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020308', 1, 1, 1, 0, 2, 3, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020309', 1, 1, 1, 0, 2, 3, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020310', 1, 1, 1, 0, 2, 3, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020311', 1, 1, 1, 0, 2, 3, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020312', 1, 1, 1, 0, 2, 3, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020401', 1, 1, 1, 0, 2, 4, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020402', 1, 1, 1, 0, 2, 4, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020403', 1, 1, 1, 0, 2, 4, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020404', 1, 1, 1, 0, 2, 4, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020405', 1, 1, 1, 0, 2, 4, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020406', 1, 1, 1, 0, 2, 4, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020407', 1, 1, 1, 0, 2, 4, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020408', 1, 1, 1, 0, 2, 4, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020409', 1, 1, 1, 0, 2, 4, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020410', 1, 1, 1, 0, 2, 4, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020411', 1, 1, 1, 0, 2, 4, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020412', 1, 1, 1, 0, 2, 4, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020501', 1, 1, 1, 0, 2, 5, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020502', 1, 1, 1, 0, 2, 5, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020503', 1, 1, 1, 0, 2, 5, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020504', 1, 1, 1, 0, 2, 5, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020505', 1, 1, 1, 0, 2, 5, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020506', 1, 1, 1, 0, 2, 5, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020507', 1, 1, 1, 0, 2, 5, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020508', 1, 1, 1, 0, 2, 5, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020509', 1, 1, 1, 0, 2, 5, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020510', 1, 1, 1, 0, 2, 5, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020511', 1, 1, 1, 0, 2, 5, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020512', 1, 1, 1, 0, 2, 5, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020601', 1, 1, 1, 0, 2, 6, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020602', 1, 1, 1, 0, 2, 6, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020603', 1, 1, 1, 0, 2, 6, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020604', 1, 1, 1, 0, 2, 6, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020605', 1, 1, 1, 0, 2, 6, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020606', 1, 1, 1, 0, 2, 6, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020607', 1, 1, 1, 0, 2, 6, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020608', 1, 1, 1, 0, 2, 6, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020609', 1, 1, 1, 0, 2, 6, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020610', 1, 1, 1, 0, 2, 6, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020611', 1, 1, 1, 0, 2, 6, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020612', 1, 1, 1, 0, 2, 6, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020701', 1, 1, 1, 0, 2, 7, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020702', 1, 1, 1, 0, 2, 7, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020703', 1, 1, 1, 0, 2, 7, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020704', 1, 1, 1, 0, 2, 7, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020705', 1, 1, 1, 0, 2, 7, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020706', 1, 1, 1, 0, 2, 7, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020707', 1, 1, 1, 0, 2, 7, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020708', 1, 1, 1, 0, 2, 7, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020709', 1, 1, 1, 0, 2, 7, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020710', 1, 1, 1, 0, 2, 7, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020711', 1, 1, 1, 0, 2, 7, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020712', 1, 1, 1, 0, 2, 7, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020801', 1, 1, 1, 0, 2, 8, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020802', 1, 1, 1, 0, 2, 8, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020803', 1, 1, 1, 0, 2, 8, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020804', 1, 1, 1, 0, 2, 8, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020805', 1, 1, 1, 0, 2, 8, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020806', 1, 1, 1, 0, 2, 8, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020807', 1, 1, 1, 0, 2, 8, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020808', 1, 1, 1, 0, 2, 8, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020809', 1, 1, 1, 0, 2, 8, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020810', 1, 1, 1, 0, 2, 8, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020811', 1, 1, 1, 0, 2, 8, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020812', 1, 1, 1, 0, 2, 8, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020901', 1, 1, 1, 0, 2, 9, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020902', 1, 1, 1, 0, 2, 9, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020903', 1, 1, 1, 0, 2, 9, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020904', 1, 1, 1, 0, 2, 9, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020905', 1, 1, 1, 0, 2, 9, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020906', 1, 1, 1, 0, 2, 9, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020907', 1, 1, 1, 0, 2, 9, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020908', 1, 1, 1, 0, 2, 9, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020909', 1, 1, 1, 0, 2, 9, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020910', 1, 1, 1, 0, 2, 9, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020911', 1, 1, 1, 0, 2, 9, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('020912', 1, 1, 1, 0, 2, 9, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021001', 1, 1, 1, 0, 2, 10, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021002', 1, 1, 1, 0, 2, 10, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021003', 1, 1, 1, 0, 2, 10, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021004', 1, 1, 1, 0, 2, 10, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021005', 1, 1, 1, 0, 2, 10, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021006', 1, 1, 1, 0, 2, 10, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021007', 1, 1, 1, 0, 2, 10, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021008', 1, 1, 1, 0, 2, 10, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021009', 1, 1, 1, 0, 2, 10, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021010', 1, 1, 1, 0, 2, 10, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021011', 1, 1, 1, 0, 2, 10, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021012', 1, 1, 1, 0, 2, 10, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021101', 1, 1, 1, 0, 2, 11, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021102', 1, 1, 1, 0, 2, 11, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021103', 1, 1, 1, 0, 2, 11, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021104', 1, 1, 1, 0, 2, 11, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021105', 1, 1, 1, 0, 2, 11, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021106', 1, 1, 1, 0, 2, 11, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021107', 1, 1, 1, 0, 2, 11, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021108', 1, 1, 1, 0, 2, 11, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021109', 1, 1, 1, 0, 2, 11, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021110', 1, 1, 1, 0, 2, 11, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021111', 1, 1, 1, 0, 2, 11, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021112', 1, 1, 1, 0, 2, 11, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021201', 1, 1, 1, 0, 2, 12, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021202', 1, 1, 1, 0, 2, 12, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021203', 1, 1, 1, 0, 2, 12, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021204', 1, 1, 1, 0, 2, 12, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021205', 1, 1, 1, 0, 2, 12, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021206', 1, 1, 1, 0, 2, 12, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021207', 1, 1, 1, 0, 2, 12, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021208', 1, 1, 1, 0, 2, 12, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021209', 1, 1, 1, 0, 2, 12, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021210', 1, 1, 1, 0, 2, 12, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021211', 1, 1, 1, 0, 2, 12, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021212', 1, 1, 1, 0, 2, 12, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021301', 1, 1, 1, 0, 2, 13, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021302', 1, 1, 1, 0, 2, 13, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021303', 1, 1, 1, 0, 2, 13, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021304', 1, 1, 1, 0, 2, 13, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021305', 1, 1, 1, 0, 2, 13, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021306', 1, 1, 1, 0, 2, 13, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021307', 1, 1, 1, 0, 2, 13, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021308', 1, 1, 1, 0, 2, 13, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021309', 1, 1, 1, 0, 2, 13, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021310', 1, 1, 1, 0, 2, 13, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021311', 1, 1, 1, 0, 2, 13, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021312', 1, 1, 1, 0, 2, 13, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021401', 1, 1, 1, 0, 2, 14, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021402', 1, 1, 1, 0, 2, 14, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021403', 1, 1, 1, 0, 2, 14, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021404', 1, 1, 1, 0, 2, 14, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021405', 1, 1, 1, 0, 2, 14, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021406', 1, 1, 1, 0, 2, 14, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021407', 1, 1, 1, 0, 2, 14, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021408', 1, 1, 1, 0, 2, 14, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021409', 1, 1, 1, 0, 2, 14, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021410', 1, 1, 1, 0, 2, 14, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021411', 1, 1, 1, 0, 2, 14, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021412', 1, 1, 1, 0, 2, 14, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021501', 1, 1, 1, 0, 2, 15, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021502', 1, 1, 1, 0, 2, 15, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021503', 1, 1, 1, 0, 2, 15, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021504', 1, 1, 1, 0, 2, 15, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021505', 1, 1, 1, 0, 2, 15, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021506', 1, 1, 1, 0, 2, 15, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021507', 1, 1, 1, 0, 2, 15, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021508', 1, 1, 1, 0, 2, 15, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021509', 1, 1, 1, 0, 2, 15, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021510', 1, 1, 1, 0, 2, 15, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021511', 1, 1, 1, 0, 2, 15, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021512', 1, 1, 1, 0, 2, 15, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021601', 1, 1, 1, 0, 2, 16, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021602', 1, 1, 1, 0, 2, 16, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021603', 1, 1, 1, 0, 2, 16, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021604', 1, 1, 1, 0, 2, 16, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021605', 1, 1, 1, 0, 2, 16, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021606', 1, 1, 1, 0, 2, 16, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021607', 1, 1, 1, 0, 2, 16, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021608', 1, 1, 1, 0, 2, 16, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021609', 1, 1, 1, 0, 2, 16, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021610', 1, 1, 1, 0, 2, 16, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021611', 1, 1, 1, 0, 2, 16, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021612', 1, 1, 1, 0, 2, 16, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021701', 1, 1, 1, 0, 2, 17, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021702', 1, 1, 1, 0, 2, 17, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021703', 1, 1, 1, 0, 2, 17, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021704', 1, 1, 1, 0, 2, 17, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021705', 1, 1, 1, 0, 2, 17, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021706', 1, 1, 1, 0, 2, 17, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021707', 1, 1, 1, 0, 2, 17, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021708', 1, 1, 1, 0, 2, 17, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021709', 1, 1, 1, 0, 2, 17, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021710', 1, 1, 1, 0, 2, 17, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021711', 1, 1, 1, 0, 2, 17, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021712', 1, 1, 1, 0, 2, 17, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021801', 1, 1, 1, 0, 2, 18, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021802', 1, 1, 1, 0, 2, 18, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021803', 1, 1, 1, 0, 2, 18, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021804', 1, 1, 1, 0, 2, 18, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021805', 1, 1, 1, 0, 2, 18, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021806', 1, 1, 1, 0, 2, 18, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021807', 1, 1, 1, 0, 2, 18, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021808', 1, 1, 1, 0, 2, 18, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021809', 1, 1, 1, 0, 2, 18, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021810', 1, 1, 1, 0, 2, 18, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021811', 1, 1, 1, 0, 2, 18, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021812', 1, 1, 1, 0, 2, 18, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021901', 1, 1, 1, 0, 2, 19, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021902', 1, 1, 1, 0, 2, 19, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021903', 1, 1, 1, 0, 2, 19, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021904', 1, 1, 1, 0, 2, 19, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021905', 1, 1, 1, 0, 2, 19, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021906', 1, 1, 1, 0, 2, 19, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021907', 1, 1, 1, 0, 2, 19, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021908', 1, 1, 1, 0, 2, 19, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021909', 1, 1, 1, 0, 2, 19, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021910', 1, 1, 1, 0, 2, 19, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021911', 1, 1, 1, 0, 2, 19, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('021912', 1, 1, 1, 0, 2, 19, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022001', 1, 1, 1, 0, 2, 20, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022002', 1, 1, 1, 0, 2, 20, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022003', 1, 1, 1, 0, 2, 20, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022004', 1, 1, 1, 0, 2, 20, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022005', 1, 1, 1, 0, 2, 20, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022006', 1, 1, 1, 0, 2, 20, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022007', 1, 1, 1, 0, 2, 20, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022008', 1, 1, 1, 0, 2, 20, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022009', 1, 1, 1, 0, 2, 20, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022010', 1, 1, 1, 0, 2, 20, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022011', 1, 1, 1, 0, 2, 20, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022012', 1, 1, 1, 0, 2, 20, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022101', 1, 1, 1, 0, 2, 21, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022102', 1, 1, 1, 0, 2, 21, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022103', 1, 1, 1, 0, 2, 21, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022104', 1, 1, 1, 0, 2, 21, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022105', 1, 1, 1, 0, 2, 21, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022106', 1, 1, 1, 0, 2, 21, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022107', 1, 1, 1, 0, 2, 21, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022108', 1, 1, 1, 0, 2, 21, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022109', 1, 1, 1, 0, 2, 21, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022110', 1, 1, 1, 0, 2, 21, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022111', 1, 1, 1, 0, 2, 21, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022112', 1, 1, 1, 0, 2, 21, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022201', 1, 1, 1, 0, 2, 22, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022202', 1, 1, 1, 0, 2, 22, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022203', 1, 1, 1, 0, 2, 22, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022204', 1, 1, 1, 0, 2, 22, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022205', 1, 1, 1, 0, 2, 22, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022206', 1, 1, 1, 0, 2, 22, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022207', 1, 1, 1, 0, 2, 22, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022208', 1, 1, 1, 0, 2, 22, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022209', 1, 1, 1, 0, 2, 22, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022210', 1, 1, 1, 0, 2, 22, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022211', 1, 1, 1, 0, 2, 22, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022212', 1, 1, 1, 0, 2, 22, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022301', 1, 1, 1, 0, 2, 23, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022302', 1, 1, 1, 0, 2, 23, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022303', 1, 1, 1, 0, 2, 23, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022304', 1, 1, 1, 0, 2, 23, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022305', 1, 1, 1, 0, 2, 23, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022306', 1, 1, 1, 0, 2, 23, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022307', 1, 1, 1, 0, 2, 23, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022308', 1, 1, 1, 0, 2, 23, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022309', 1, 1, 1, 0, 2, 23, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022310', 1, 1, 1, 0, 2, 23, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022311', 1, 1, 1, 0, 2, 23, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022312', 1, 1, 1, 0, 2, 23, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022401', 1, 1, 1, 0, 2, 24, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022402', 1, 1, 1, 0, 2, 24, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022403', 1, 1, 1, 0, 2, 24, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022404', 1, 1, 1, 0, 2, 24, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022405', 1, 1, 1, 0, 2, 24, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022406', 1, 1, 1, 0, 2, 24, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022407', 1, 1, 1, 0, 2, 24, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022408', 1, 1, 1, 0, 2, 24, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022409', 1, 1, 1, 0, 2, 24, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022410', 1, 1, 1, 0, 2, 24, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022411', 1, 1, 1, 0, 2, 24, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022412', 1, 1, 1, 0, 2, 24, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022501', 1, 1, 1, 0, 2, 25, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022502', 1, 1, 1, 0, 2, 25, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022503', 1, 1, 1, 0, 2, 25, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022504', 1, 1, 1, 0, 2, 25, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022505', 1, 1, 1, 0, 2, 25, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022506', 1, 1, 1, 0, 2, 25, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022507', 1, 1, 1, 0, 2, 25, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022508', 1, 1, 1, 0, 2, 25, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022509', 1, 1, 1, 0, 2, 25, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022510', 1, 1, 1, 0, 2, 25, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022511', 1, 1, 1, 0, 2, 25, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022512', 1, 1, 1, 0, 2, 25, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022601', 1, 1, 1, 0, 2, 26, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022602', 1, 1, 1, 0, 2, 26, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022603', 1, 1, 1, 0, 2, 26, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022604', 1, 1, 1, 0, 2, 26, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022605', 1, 1, 1, 0, 2, 26, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022606', 1, 1, 1, 0, 2, 26, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022607', 1, 1, 1, 0, 2, 26, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022608', 1, 1, 1, 0, 2, 26, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022609', 1, 1, 1, 0, 2, 26, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022610', 1, 1, 1, 0, 2, 26, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022611', 1, 1, 1, 0, 2, 26, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022612', 1, 1, 1, 0, 2, 26, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022701', 1, 1, 1, 0, 2, 27, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022702', 1, 1, 1, 0, 2, 27, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022703', 1, 1, 1, 0, 2, 27, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022704', 1, 1, 1, 0, 2, 27, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022705', 1, 1, 1, 0, 2, 27, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022706', 1, 1, 1, 0, 2, 27, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022707', 1, 1, 1, 0, 2, 27, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022708', 1, 1, 1, 0, 2, 27, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022709', 1, 1, 1, 0, 2, 27, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022710', 1, 1, 1, 0, 2, 27, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022711', 1, 1, 1, 0, 2, 27, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022712', 1, 1, 1, 0, 2, 27, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022801', 1, 1, 1, 0, 2, 28, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022802', 1, 1, 1, 0, 2, 28, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022803', 1, 1, 1, 0, 2, 28, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022804', 1, 1, 1, 0, 2, 28, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022805', 1, 1, 1, 0, 2, 28, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022806', 1, 1, 1, 0, 2, 28, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022807', 1, 1, 1, 0, 2, 28, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022808', 1, 1, 1, 0, 2, 28, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022809', 1, 1, 1, 0, 2, 28, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022810', 1, 1, 1, 0, 2, 28, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022811', 1, 1, 1, 0, 2, 28, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022812', 1, 1, 1, 0, 2, 28, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022901', 1, 1, 1, 0, 2, 29, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022902', 1, 1, 1, 0, 2, 29, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022903', 1, 1, 1, 0, 2, 29, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022904', 1, 1, 1, 0, 2, 29, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022905', 1, 1, 1, 0, 2, 29, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022906', 1, 1, 1, 0, 2, 29, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022907', 1, 1, 1, 0, 2, 29, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022908', 1, 1, 1, 0, 2, 29, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022909', 1, 1, 1, 0, 2, 29, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022910', 1, 1, 1, 0, 2, 29, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022911', 1, 1, 1, 0, 2, 29, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('022912', 1, 1, 1, 0, 2, 29, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023001', 1, 1, 1, 0, 2, 30, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023002', 1, 1, 1, 0, 2, 30, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023003', 1, 1, 1, 0, 2, 30, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023004', 1, 1, 1, 0, 2, 30, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023005', 1, 1, 1, 0, 2, 30, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023006', 1, 1, 1, 0, 2, 30, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023007', 1, 1, 1, 0, 2, 30, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023008', 1, 1, 1, 0, 2, 30, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023009', 1, 1, 1, 0, 2, 30, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023010', 1, 1, 1, 0, 2, 30, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023011', 1, 1, 1, 0, 2, 30, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023012', 1, 1, 1, 0, 2, 30, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023101', 1, 1, 1, 0, 2, 31, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023102', 1, 1, 1, 0, 2, 31, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023103', 1, 1, 1, 0, 2, 31, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023104', 1, 1, 1, 0, 2, 31, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023105', 1, 1, 1, 0, 2, 31, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023106', 1, 1, 1, 0, 2, 31, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023107', 1, 1, 1, 0, 2, 31, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023108', 1, 1, 1, 0, 2, 31, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023109', 1, 1, 1, 0, 2, 31, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023110', 1, 1, 1, 0, 2, 31, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023111', 1, 1, 1, 0, 2, 31, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023112', 1, 1, 1, 0, 2, 31, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023201', 1, 1, 1, 0, 2, 32, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023202', 1, 1, 1, 0, 2, 32, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023203', 1, 1, 1, 0, 2, 32, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023204', 1, 1, 1, 0, 2, 32, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023205', 1, 1, 1, 0, 2, 32, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023206', 1, 1, 1, 0, 2, 32, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023207', 1, 1, 1, 0, 2, 32, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023208', 1, 1, 1, 0, 2, 32, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023209', 1, 1, 1, 0, 2, 32, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023210', 1, 1, 1, 0, 2, 32, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023211', 1, 1, 1, 0, 2, 32, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023212', 1, 1, 1, 0, 2, 32, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023301', 1, 1, 1, 0, 2, 33, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023302', 1, 1, 1, 0, 2, 33, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023303', 1, 1, 1, 0, 2, 33, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023304', 1, 1, 1, 0, 2, 33, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023305', 1, 1, 1, 0, 2, 33, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023306', 1, 1, 1, 0, 2, 33, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023307', 1, 1, 1, 0, 2, 33, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023308', 1, 1, 1, 0, 2, 33, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023309', 1, 1, 1, 0, 2, 33, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023310', 1, 1, 1, 0, 2, 33, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023311', 1, 1, 1, 0, 2, 33, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023312', 1, 1, 1, 0, 2, 33, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023401', 1, 1, 1, 0, 2, 34, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023402', 1, 1, 1, 0, 2, 34, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023403', 1, 1, 1, 0, 2, 34, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023404', 1, 1, 1, 0, 2, 34, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023405', 1, 1, 1, 0, 2, 34, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023406', 1, 1, 1, 0, 2, 34, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023407', 1, 1, 1, 0, 2, 34, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023408', 1, 1, 1, 0, 2, 34, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023409', 1, 1, 1, 0, 2, 34, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023410', 1, 1, 1, 0, 2, 34, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023411', 1, 1, 1, 0, 2, 34, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023412', 1, 1, 1, 0, 2, 34, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023501', 1, 1, 1, 0, 2, 35, 1, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023502', 1, 1, 1, 0, 2, 35, 2, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023503', 1, 1, 1, 0, 2, 35, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023504', 1, 1, 1, 0, 2, 35, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023505', 1, 1, 1, 0, 2, 35, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023506', 1, 1, 1, 0, 2, 35, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023507', 1, 1, 1, 0, 2, 35, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023508', 1, 1, 1, 0, 2, 35, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023509', 1, 1, 1, 0, 2, 35, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023510', 1, 1, 1, 0, 2, 35, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023511', 1, 1, 1, 0, 2, 35, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023512', 1, 1, 1, 0, 2, 35, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023601', 1, 1, 1, 0, 2, 36, 1, 1, 0, 1, 'XZBK0014'); +INSERT INTO `tbl_app_location` VALUES ('023602', 1, 1, 1, 0, 2, 36, 2, 1, 0, 1, 'XZBK0013'); +INSERT INTO `tbl_app_location` VALUES ('023603', 1, 1, 1, 0, 2, 36, 3, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023604', 1, 1, 1, 0, 2, 36, 4, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023605', 1, 1, 1, 0, 2, 36, 5, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023606', 1, 1, 1, 0, 2, 36, 6, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023607', 1, 1, 1, 0, 2, 36, 7, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023608', 1, 1, 1, 0, 2, 36, 8, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023609', 1, 1, 1, 0, 2, 36, 9, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023610', 1, 1, 1, 0, 2, 36, 10, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023611', 1, 1, 1, 0, 2, 36, 11, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023612', 1, 1, 1, 0, 2, 36, 12, 1, 0, 0, NULL); +INSERT INTO `tbl_app_location` VALUES ('023701', 1, 1, 1, 0, 2, 37, 1, 1, 0, 1, 'XZBK0010'); +INSERT INTO `tbl_app_location` VALUES ('023702', 1, 1, 1, 0, 2, 37, 2, 1, 0, 1, 'XZBK0009'); +INSERT INTO `tbl_app_location` VALUES ('023703', 1, 1, 1, 0, 2, 37, 3, 1, 0, 1, 'XZBK0008'); +INSERT INTO `tbl_app_location` VALUES ('023704', 1, 1, 1, 0, 2, 37, 4, 1, 0, 1, 'XZBK0007'); +INSERT INTO `tbl_app_location` VALUES ('023705', 1, 1, 1, 0, 2, 37, 5, 1, 0, 1, 'XZBK0006'); +INSERT INTO `tbl_app_location` VALUES ('023706', 1, 1, 1, 0, 2, 37, 6, 1, 0, 1, 'XZBK0005'); +INSERT INTO `tbl_app_location` VALUES ('023707', 1, 1, 1, 0, 2, 37, 7, 1, 0, 1, 'XZBK0020'); +INSERT INTO `tbl_app_location` VALUES ('023708', 1, 1, 1, 0, 2, 37, 8, 1, 0, 1, 'XZBK0019'); +INSERT INTO `tbl_app_location` VALUES ('023709', 1, 1, 1, 0, 2, 37, 9, 1, 0, 1, 'XZBK0018'); +INSERT INTO `tbl_app_location` VALUES ('023710', 1, 1, 1, 0, 2, 37, 10, 1, 0, 1, 'XZBK0017'); +INSERT INTO `tbl_app_location` VALUES ('023711', 1, 1, 1, 0, 2, 37, 11, 1, 0, 1, 'XZBK0016'); +INSERT INTO `tbl_app_location` VALUES ('023712', 1, 1, 1, 0, 2, 37, 12, 1, 0, 1, 'XZBK0015'); +INSERT INTO `tbl_app_location` VALUES ('023801', 1, 1, 1, 0, 2, 38, 1, 1, 0, 1, 'XZBK0022'); +INSERT INTO `tbl_app_location` VALUES ('023802', 1, 1, 1, 0, 2, 38, 2, 1, 0, 1, 'XZBK0021'); +INSERT INTO `tbl_app_location` VALUES ('023803', 1, 1, 1, 0, 2, 38, 3, 1, 0, 1, 'XZBK0036'); +INSERT INTO `tbl_app_location` VALUES ('023804', 1, 1, 1, 0, 2, 38, 4, 1, 0, 1, 'XZBK0035'); +INSERT INTO `tbl_app_location` VALUES ('023805', 1, 1, 1, 0, 2, 38, 5, 1, 0, 1, 'XZBK0034'); +INSERT INTO `tbl_app_location` VALUES ('023806', 1, 1, 1, 0, 2, 38, 6, 1, 0, 1, 'XZBK0033'); +INSERT INTO `tbl_app_location` VALUES ('023807', 1, 1, 1, 0, 2, 38, 7, 1, 0, 1, 'XZBK0032'); +INSERT INTO `tbl_app_location` VALUES ('023808', 1, 1, 1, 0, 2, 38, 8, 1, 0, 1, 'XZBK0031'); +INSERT INTO `tbl_app_location` VALUES ('023809', 1, 1, 1, 0, 2, 38, 9, 1, 0, 1, 'XZBK0030'); +INSERT INTO `tbl_app_location` VALUES ('023810', 1, 1, 1, 0, 2, 38, 10, 1, 0, 1, 'XZBK0029'); +INSERT INTO `tbl_app_location` VALUES ('023811', 1, 1, 1, 0, 2, 38, 11, 1, 0, 1, 'XZBK0012'); +INSERT INTO `tbl_app_location` VALUES ('023812', 1, 1, 1, 0, 2, 38, 12, 1, 0, 1, 'XZBK0011'); +INSERT INTO `tbl_app_location` VALUES ('023901', 1, 1, 1, 0, 2, 39, 1, 1, 0, 1, 'XZBK0050'); +INSERT INTO `tbl_app_location` VALUES ('023902', 1, 1, 1, 0, 2, 39, 2, 1, 0, 1, 'XZBK0049'); +INSERT INTO `tbl_app_location` VALUES ('023903', 1, 1, 1, 0, 2, 39, 3, 1, 0, 1, 'XZBK0048'); +INSERT INTO `tbl_app_location` VALUES ('023904', 1, 1, 1, 0, 2, 39, 4, 1, 0, 1, 'XZBK0047'); +INSERT INTO `tbl_app_location` VALUES ('023905', 1, 1, 1, 0, 2, 39, 5, 1, 0, 1, 'XZBK0046'); +INSERT INTO `tbl_app_location` VALUES ('023906', 1, 1, 1, 0, 2, 39, 6, 1, 0, 1, 'XZBK0045'); +INSERT INTO `tbl_app_location` VALUES ('023907', 1, 1, 1, 0, 2, 39, 7, 1, 0, 1, 'XZBK0028'); +INSERT INTO `tbl_app_location` VALUES ('023908', 1, 1, 1, 0, 2, 39, 8, 1, 0, 1, 'XZBK0027'); +INSERT INTO `tbl_app_location` VALUES ('023909', 1, 1, 1, 0, 2, 39, 9, 1, 0, 1, 'XZBK0026'); +INSERT INTO `tbl_app_location` VALUES ('023910', 1, 1, 1, 0, 2, 39, 10, 1, 0, 1, 'XZBK0025'); +INSERT INTO `tbl_app_location` VALUES ('023911', 1, 1, 1, 0, 2, 39, 11, 1, 0, 1, 'XZBK0024'); +INSERT INTO `tbl_app_location` VALUES ('023912', 1, 1, 1, 0, 2, 39, 12, 1, 0, 1, 'XZBK0023'); +INSERT INTO `tbl_app_location` VALUES ('024001', 1, 1, 1, 0, 2, 40, 1, 1, 0, 1, 'XZBK0061'); +INSERT INTO `tbl_app_location` VALUES ('024002', 1, 1, 1, 0, 2, 40, 2, 1, 0, 1, 'XZBK0739'); +INSERT INTO `tbl_app_location` VALUES ('024003', 1, 1, 1, 0, 2, 40, 3, 1, 0, 1, 'XZBK0044'); +INSERT INTO `tbl_app_location` VALUES ('024004', 1, 1, 1, 0, 2, 40, 4, 1, 0, 1, 'XZBK0043'); +INSERT INTO `tbl_app_location` VALUES ('024005', 1, 1, 1, 0, 2, 40, 5, 1, 0, 1, 'XZBK0042'); +INSERT INTO `tbl_app_location` VALUES ('024006', 1, 1, 1, 0, 2, 40, 6, 1, 0, 1, 'XZBK0041'); +INSERT INTO `tbl_app_location` VALUES ('024007', 1, 1, 1, 0, 2, 40, 7, 1, 0, 1, 'XZBK0040'); +INSERT INTO `tbl_app_location` VALUES ('024008', 1, 1, 1, 0, 2, 40, 8, 1, 0, 1, 'XZBK0039'); +INSERT INTO `tbl_app_location` VALUES ('024009', 1, 1, 1, 0, 2, 40, 9, 1, 0, 1, 'XZBK0038'); +INSERT INTO `tbl_app_location` VALUES ('024010', 1, 1, 1, 0, 2, 40, 10, 1, 0, 1, 'XZBK0037'); +INSERT INTO `tbl_app_location` VALUES ('024011', 1, 1, 1, 0, 2, 40, 11, 1, 0, 1, 'XZBK0052'); +INSERT INTO `tbl_app_location` VALUES ('024012', 1, 1, 1, 0, 2, 40, 12, 1, 0, 1, 'XZBK0051'); +INSERT INTO `tbl_app_location` VALUES ('024101', 1, 1, 1, 0, 2, 41, 1, 1, 0, 1, 'XZBK0057'); +INSERT INTO `tbl_app_location` VALUES ('024102', 1, 1, 1, 0, 2, 41, 2, 1, 0, 1, 'XZBK0056'); +INSERT INTO `tbl_app_location` VALUES ('024103', 1, 1, 1, 0, 2, 41, 3, 1, 0, 1, 'XZBK0055'); +INSERT INTO `tbl_app_location` VALUES ('024104', 1, 1, 1, 0, 2, 41, 4, 1, 0, 1, 'XZBK0054'); +INSERT INTO `tbl_app_location` VALUES ('024105', 1, 1, 1, 0, 2, 41, 5, 1, 0, 1, 'XZBK0053'); +INSERT INTO `tbl_app_location` VALUES ('024106', 1, 1, 1, 0, 2, 41, 6, 1, 0, 1, 'XZBK0068'); +INSERT INTO `tbl_app_location` VALUES ('024107', 1, 1, 1, 0, 2, 41, 7, 1, 0, 1, 'XZBK0067'); +INSERT INTO `tbl_app_location` VALUES ('024108', 1, 1, 1, 0, 2, 41, 8, 1, 0, 1, 'XZBK0066'); +INSERT INTO `tbl_app_location` VALUES ('024109', 1, 1, 1, 0, 2, 41, 9, 1, 0, 1, 'XZBK0065'); +INSERT INTO `tbl_app_location` VALUES ('024110', 1, 1, 1, 0, 2, 41, 10, 1, 0, 1, 'XZBK0064'); +INSERT INTO `tbl_app_location` VALUES ('024111', 1, 1, 1, 0, 2, 41, 11, 1, 0, 1, 'XZBK0063'); +INSERT INTO `tbl_app_location` VALUES ('024112', 1, 1, 1, 0, 2, 41, 12, 1, 0, 1, 'XZBK0062'); +INSERT INTO `tbl_app_location` VALUES ('024201', 1, 1, 1, 0, 2, 42, 1, 1, 0, 1, 'XZBK0069'); +INSERT INTO `tbl_app_location` VALUES ('024202', 1, 1, 1, 0, 2, 42, 2, 1, 0, 1, 'XZBK0084'); +INSERT INTO `tbl_app_location` VALUES ('024203', 1, 1, 1, 0, 2, 42, 3, 1, 0, 1, 'XZBK0083'); +INSERT INTO `tbl_app_location` VALUES ('024204', 1, 1, 1, 0, 2, 42, 4, 1, 0, 1, 'XZBK0082'); +INSERT INTO `tbl_app_location` VALUES ('024205', 1, 1, 1, 0, 2, 42, 5, 1, 0, 1, 'XZBK0081'); +INSERT INTO `tbl_app_location` VALUES ('024206', 1, 1, 1, 0, 2, 42, 6, 1, 0, 1, 'XZBK0080'); +INSERT INTO `tbl_app_location` VALUES ('024207', 1, 1, 1, 0, 2, 42, 7, 1, 0, 1, 'XZBK0079'); +INSERT INTO `tbl_app_location` VALUES ('024208', 1, 1, 1, 0, 2, 42, 8, 1, 0, 1, 'XZBK0078'); +INSERT INTO `tbl_app_location` VALUES ('024209', 1, 1, 1, 0, 2, 42, 9, 1, 0, 1, 'XZBK0077'); +INSERT INTO `tbl_app_location` VALUES ('024210', 1, 1, 1, 0, 2, 42, 10, 1, 0, 1, 'XZBK0060'); +INSERT INTO `tbl_app_location` VALUES ('024211', 1, 1, 1, 0, 2, 42, 11, 1, 0, 1, 'XZBK0059'); +INSERT INTO `tbl_app_location` VALUES ('024212', 1, 1, 1, 0, 2, 42, 12, 1, 0, 1, 'XZBK0058'); +INSERT INTO `tbl_app_location` VALUES ('024301', 1, 1, 1, 0, 2, 43, 1, 1, 0, 1, 'XZBK0776'); +INSERT INTO `tbl_app_location` VALUES ('024302', 1, 1, 1, 0, 2, 43, 2, 1, 0, 1, 'XZBK0747'); +INSERT INTO `tbl_app_location` VALUES ('024303', 1, 1, 1, 0, 2, 43, 3, 1, 0, 1, 'XZBK0002'); +INSERT INTO `tbl_app_location` VALUES ('024304', 1, 1, 1, 0, 2, 43, 4, 1, 0, 1, 'XZBK0745'); +INSERT INTO `tbl_app_location` VALUES ('024305', 1, 1, 1, 0, 2, 43, 5, 1, 0, 1, 'XZBK0746'); +INSERT INTO `tbl_app_location` VALUES ('024306', 1, 1, 1, 0, 2, 43, 6, 1, 0, 1, 'XZBK0076'); +INSERT INTO `tbl_app_location` VALUES ('024307', 1, 1, 1, 0, 2, 43, 7, 1, 0, 1, 'XZBK0075'); +INSERT INTO `tbl_app_location` VALUES ('024308', 1, 1, 1, 0, 2, 43, 8, 1, 0, 1, 'XZBK0074'); +INSERT INTO `tbl_app_location` VALUES ('024309', 1, 1, 1, 0, 2, 43, 9, 1, 0, 1, 'XZBK0073'); +INSERT INTO `tbl_app_location` VALUES ('024310', 1, 1, 1, 0, 2, 43, 10, 1, 0, 1, 'XZBK0072'); +INSERT INTO `tbl_app_location` VALUES ('024311', 1, 1, 1, 0, 2, 43, 11, 1, 0, 1, 'XZBK0071'); +INSERT INTO `tbl_app_location` VALUES ('024312', 1, 1, 1, 0, 2, 43, 12, 1, 0, 1, 'XZBK0070'); +INSERT INTO `tbl_app_location` VALUES ('024401', 1, 1, 1, 0, 2, 44, 1, 1, 0, 1, 'XZBK0096'); +INSERT INTO `tbl_app_location` VALUES ('024402', 1, 1, 1, 0, 2, 44, 2, 1, 0, 1, 'XZBK0095'); +INSERT INTO `tbl_app_location` VALUES ('024403', 1, 1, 1, 0, 2, 44, 3, 1, 0, 1, 'XZBK0094'); +INSERT INTO `tbl_app_location` VALUES ('024404', 1, 1, 1, 0, 2, 44, 4, 1, 0, 1, 'XZBK0093'); +INSERT INTO `tbl_app_location` VALUES ('024405', 1, 1, 1, 0, 2, 44, 5, 1, 0, 1, 'XZBK0744'); +INSERT INTO `tbl_app_location` VALUES ('024406', 1, 1, 1, 0, 2, 44, 6, 1, 0, 1, 'XZBK0738'); +INSERT INTO `tbl_app_location` VALUES ('024407', 1, 1, 1, 0, 2, 44, 7, 1, 0, 1, 'XZBK0737'); +INSERT INTO `tbl_app_location` VALUES ('024408', 1, 1, 1, 0, 2, 44, 8, 1, 0, 1, 'XZBK0736'); +INSERT INTO `tbl_app_location` VALUES ('024409', 1, 1, 1, 0, 2, 44, 9, 1, 0, 1, 'XZBK0743'); +INSERT INTO `tbl_app_location` VALUES ('024410', 1, 1, 1, 0, 2, 44, 10, 1, 0, 1, 'XZBK0742'); +INSERT INTO `tbl_app_location` VALUES ('024411', 1, 1, 1, 0, 2, 44, 11, 1, 0, 1, 'XZBK0741'); +INSERT INTO `tbl_app_location` VALUES ('024412', 1, 1, 1, 0, 2, 44, 12, 1, 0, 1, 'XZBK0740'); +INSERT INTO `tbl_app_location` VALUES ('024501', 1, 1, 1, 0, 2, 45, 1, 1, 0, 1, 'XZBK0092'); +INSERT INTO `tbl_app_location` VALUES ('024502', 1, 1, 1, 0, 2, 45, 2, 1, 0, 1, 'XZBK0091'); +INSERT INTO `tbl_app_location` VALUES ('024503', 1, 1, 1, 0, 2, 45, 3, 1, 0, 1, 'XZBK0090'); +INSERT INTO `tbl_app_location` VALUES ('024504', 1, 1, 1, 0, 2, 45, 4, 1, 0, 1, 'XZBK0089'); +INSERT INTO `tbl_app_location` VALUES ('024505', 1, 1, 1, 0, 2, 45, 5, 1, 0, 1, 'XZBK0088'); +INSERT INTO `tbl_app_location` VALUES ('024506', 1, 1, 1, 0, 2, 45, 6, 1, 0, 1, 'XZBK0087'); +INSERT INTO `tbl_app_location` VALUES ('024507', 1, 1, 1, 0, 2, 45, 7, 1, 0, 1, 'XZBK0086'); +INSERT INTO `tbl_app_location` VALUES ('024508', 1, 1, 1, 0, 2, 45, 8, 1, 0, 1, 'XZBK0085'); +INSERT INTO `tbl_app_location` VALUES ('024509', 1, 1, 1, 0, 2, 45, 9, 1, 0, 1, 'XZBK0100'); +INSERT INTO `tbl_app_location` VALUES ('024510', 1, 1, 1, 0, 2, 45, 10, 1, 0, 1, 'XZBK0099'); +INSERT INTO `tbl_app_location` VALUES ('024511', 1, 1, 1, 0, 2, 45, 11, 1, 0, 1, 'XZBK0098'); +INSERT INTO `tbl_app_location` VALUES ('024512', 1, 1, 1, 0, 2, 45, 12, 1, 0, 1, 'XZBK0097'); + +-- ---------------------------- +-- Table structure for tbl_app_part_info +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_part_info`; +CREATE TABLE `tbl_app_part_info` ( + `Material` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '零件号', + `ItemDesc` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', + `Category` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '零件类型', + `CategoryRemark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '策略', + `Unload_Place` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '卸货点', + `Kitting_Point` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '配料点', + `Property` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '可用性', + `Vendor_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商代码', + `Data_Owner` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '数据负责人', + `Part_Weight` double NULL DEFAULT NULL COMMENT '重量', + `Storage_Location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '库位', + `Storage_Type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '存储类型', + `Storage_Bin` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'BIN位', + `Vendor_Name_EN` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商名称-英文', + `Vendor_Country` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '进口/国产', + `UpdateDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '更新日期', + `SLED` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '有效期', + `Vendor_Name_CN` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商名称-中文' +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_part_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_app_stand +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_stand`; +CREATE TABLE `tbl_app_stand` ( + `stand_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '站台', + `allow_in` int NULL DEFAULT NULL COMMENT '允许入库', + `allow_out` int NULL DEFAULT NULL COMMENT '允许出库', + `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务id', + `is_lock` int NULL DEFAULT NULL COMMENT '是否锁定/默认值0:未锁定', + `stand_status` int NULL DEFAULT NULL COMMENT '库存状态/默认值0:空闲', + `equipment_id` int NULL DEFAULT NULL, + `area_id` int NULL DEFAULT NULL, + `stand_type` int NULL DEFAULT NULL COMMENT '站台类型,1:基础入出库站台,2:拣选站台', + `stand_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '站台电脑的ip', + PRIMARY KEY (`stand_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_stand +-- ---------------------------- +INSERT INTO `tbl_app_stand` VALUES ('1', 0, 0, NULL, 0, 0, 1, 1, 3, NULL); +INSERT INTO `tbl_app_stand` VALUES ('101', 0, 1, NULL, 0, 0, 1, 1, 1, NULL); +INSERT INTO `tbl_app_stand` VALUES ('111', 1, 0, NULL, 0, 0, 1, 1, 1, NULL); +INSERT INTO `tbl_app_stand` VALUES ('2001', 0, 0, NULL, 0, 0, 0, 1, 2, '127.0.0.1'); + +-- ---------------------------- +-- Table structure for tbl_app_stock +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_stock`; +CREATE TABLE `tbl_app_stock` ( + `stock_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '库存编号', + `location_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '库位编号', + `vehicle_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '载具编号', + `goods_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编码', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料描述', + `batch_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `available_num` int NULL DEFAULT NULL COMMENT '可用数量', + `real_num` int NULL DEFAULT NULL COMMENT '实际数量', + `provider_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商编号', + `provider_name` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商名称', + `production_date` datetime NULL DEFAULT NULL COMMENT '生产日期', + `expiration_date` datetime NULL DEFAULT NULL COMMENT '过期日期', + `stock_status` int NULL DEFAULT NULL COMMENT '库存状态', + `goods_status` int NULL DEFAULT NULL COMMENT '物料状态', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `last_update_time` datetime NULL DEFAULT NULL COMMENT '最近更新时间', + `last_update_user` datetime NULL DEFAULT NULL COMMENT '最近更新用户', + `remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '备注,预留字段', + `is_inventory` int NULL DEFAULT NULL COMMENT '是否盘点,默认为空。', + `inventory_task_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '盘点的任务单号', + `current_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前所在位置', + `remain_num` int NULL DEFAULT NULL COMMENT '剩余数量', + `shelf_life` double NULL DEFAULT NULL COMMENT '保质期--单位:年', + PRIMARY KEY (`stock_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_stock +-- ---------------------------- +INSERT INTO `tbl_app_stock` VALUES ('1', '010101', 'XZBK0001', '1', '1', '1', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_stock` VALUES ('2', '010102', 'XZBK0002', '1', '1', '1', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); +INSERT INTO `tbl_app_stock` VALUES ('3', '010103', 'XZBK0003', '2', '2', '2', 2, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- ---------------------------- +-- Table structure for tbl_app_task +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_task`; +CREATE TABLE `tbl_app_task` ( + `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务编号,主键,UUID', + `task_type` int NOT NULL COMMENT '任务类型(1:入库;2:出库;9:移库)', + `task_status` int NOT NULL COMMENT '任务状态', + `task_group` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务组', + `origin` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '起点', + `destination` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '终点', + `pick_stand` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拣货站台', + `weight` double NULL DEFAULT NULL COMMENT '重量', + `vehicle_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '托盘号', + `vehicle_size` int NULL DEFAULT NULL COMMENT '尺寸', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作人员姓名', + `goods_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编号', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `operate_num` int NULL DEFAULT NULL COMMENT '本次操作数量', + `total_num` int NULL DEFAULT NULL COMMENT '库存总数量', + `etag_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电子标签位置', + `task_priority` int NULL DEFAULT NULL COMMENT '任务优先级:1普通9紧急', + `production_date` datetime NULL DEFAULT NULL COMMENT '入库日期/生产日期', + `expiration_date` datetime NULL DEFAULT NULL COMMENT '过期日期', + `kate_task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '卡特任务的id', + `remark1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备用字段', + PRIMARY KEY (`task_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_task +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_app_task_bak +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_task_bak`; +CREATE TABLE `tbl_app_task_bak` ( + `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务编号,主键,UUID', + `task_type` int NOT NULL COMMENT '任务类型(1:入库;2:出库;9:移库)', + `task_status` int NOT NULL COMMENT '任务状态', + `task_group` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '任务组', + `origin` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '起点', + `destination` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '终点', + `pick_stand` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '拣货站台', + `weight` double NULL DEFAULT NULL COMMENT '重量', + `vehicle_no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '托盘号', + `vehicle_size` int NULL DEFAULT NULL COMMENT '尺寸', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间', + `user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '操作人员姓名', + `goods_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料编号', + `goods_name` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '物料名称', + `operate_num` int NULL DEFAULT NULL COMMENT '本次操作数量', + `total_num` int NULL DEFAULT NULL COMMENT '库存总数量', + `etag_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电子标签位置', + `task_priority` int NULL DEFAULT NULL COMMENT '任务优先级:1普通9紧急', + `production_date` datetime NULL DEFAULT NULL COMMENT '入库日期/生产日期', + `expiration_date` datetime NULL DEFAULT NULL COMMENT '过期日期', + `kate_task_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '卡特任务的id', + `finish_time` datetime NULL DEFAULT NULL COMMENT '完成时间', + `remark1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备用字段', + PRIMARY KEY (`task_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_task_bak +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_app_vehicle +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_app_vehicle`; +CREATE TABLE `tbl_app_vehicle` ( + `vehicle_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '载具编号', + `vehicle_status` int NULL DEFAULT NULL COMMENT '载具状态', + `current_location` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当前位置', + `is_empty` int NULL DEFAULT NULL COMMENT '是否空箱', + PRIMARY KEY (`vehicle_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_app_vehicle +-- ---------------------------- +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0001', 2, '014501', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0002', 2, '024303', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0005', 2, '023706', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0006', 2, '023705', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0007', 2, '023704', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0008', 2, '023703', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0009', 2, '023702', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0010', 2, '023701', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0011', 2, '023812', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0012', 2, '023811', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0013', 2, '023602', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0014', 2, '023601', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0015', 2, '023712', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0016', 2, '023711', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0017', 2, '023710', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0018', 2, '023709', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0019', 2, '023708', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0020', 2, '023707', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0021', 2, '023802', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0022', 2, '023801', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0023', 2, '023912', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0024', 2, '023911', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0025', 2, '023910', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0026', 2, '023909', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0027', 2, '023908', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0028', 2, '023907', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0029', 2, '023810', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0030', 2, '023809', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0031', 2, '023808', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0032', 2, '023807', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0033', 2, '023806', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0034', 2, '023805', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0035', 2, '023804', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0036', 2, '023803', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0037', 2, '024010', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0038', 2, '024009', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0039', 2, '024008', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0040', 2, '024007', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0041', 2, '024006', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0042', 2, '024005', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0043', 2, '024004', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0044', 2, '024003', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0045', 2, '023906', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0046', 2, '023905', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0047', 2, '023904', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0048', 2, '023903', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0049', 2, '023902', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0050', 2, '023901', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0051', 2, '024012', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0052', 2, '024011', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0053', 2, '024105', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0054', 2, '024104', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0055', 2, '024103', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0056', 2, '024102', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0057', 2, '024101', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0058', 2, '024212', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0059', 2, '024211', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0060', 2, '024210', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0061', 2, '024001', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0062', 2, '024112', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0063', 2, '024111', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0064', 2, '024110', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0065', 2, '024109', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0066', 2, '024108', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0067', 2, '024107', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0068', 2, '024106', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0069', 2, '024201', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0070', 2, '024312', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0071', 2, '024311', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0072', 2, '024310', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0073', 2, '024309', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0074', 2, '024308', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0075', 2, '024307', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0076', 2, '024306', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0077', 2, '024209', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0078', 2, '024208', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0079', 2, '024207', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0080', 2, '024206', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0081', 2, '024205', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0082', 2, '024204', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0083', 2, '024203', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0084', 2, '024202', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0085', 2, '024508', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0086', 2, '024507', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0087', 2, '024506', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0088', 2, '024505', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0089', 2, '024504', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0090', 2, '024503', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0091', 2, '024502', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0092', 2, '024501', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0093', 2, '024404', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0094', 2, '024403', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0095', 2, '024402', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0096', 2, '024401', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0097', 2, '024512', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0098', 2, '024511', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0099', 2, '024510', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0100', 2, '024509', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0736', 2, '024408', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0737', 2, '024407', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0738', 2, '024406', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0739', 2, '024002', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0740', 2, '024412', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0741', 2, '024411', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0742', 2, '024410', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0743', 2, '024409', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0744', 2, '024405', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0745', 2, '024304', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0746', 2, '024305', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0747', 2, '024302', 1); +INSERT INTO `tbl_app_vehicle` VALUES ('XZBK0776', 2, '024301', 1); + +-- ---------------------------- +-- Table structure for tbl_sys_config +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_config`; +CREATE TABLE `tbl_sys_config` ( + `config_id` int NOT NULL COMMENT '配置ID', + `config_key` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置键', + `config_value` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置值', + `config_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置类型:1.输入框2.下拉多选3.下拉单选', + `config_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置显示名称', + PRIMARY KEY (`config_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_config +-- ---------------------------- +INSERT INTO `tbl_sys_config` VALUES (1, 'MAX_EMPTY_VEHICLE_NUM', '4', '1', '空箱个数'); + +-- ---------------------------- +-- Table structure for tbl_sys_log +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_log`; +CREATE TABLE `tbl_sys_log` ( + `log_id` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '日志id', + `log_title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '日志标题', + `log_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求方法名', + `log_request` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求参数', + `log_response` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求响应结果', + `log_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求ip', + `log_time` datetime NULL DEFAULT NULL COMMENT '请求时间', + `log_user` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '请求用户', + PRIMARY KEY (`log_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_log +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_sys_menu +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_menu`; +CREATE TABLE `tbl_sys_menu` ( + `menu_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单编号', + `label_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单名称', + `icon_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标名称', + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜单地址', + `parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '父菜单编号', + PRIMARY KEY (`menu_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_menu +-- ---------------------------- +INSERT INTO `tbl_sys_menu` VALUES ('1', '操作', 'Operation', '', '0'); +INSERT INTO `tbl_sys_menu` VALUES ('11', '入库', NULL, '/goodsIn', '1'); +INSERT INTO `tbl_sys_menu` VALUES ('12', '出库', NULL, '/goodsOut', '1'); +INSERT INTO `tbl_sys_menu` VALUES ('13', '盘点', NULL, '/inventory', '1'); +INSERT INTO `tbl_sys_menu` VALUES ('2', '数据', 'Histogram', '', '0'); +INSERT INTO `tbl_sys_menu` VALUES ('21', '库存信息', NULL, '/stock', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('22', '物料信息', NULL, '/goods', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('23', '入库记录', NULL, '/inTaskRecord', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('24', '出库记录', NULL, '/outTaskRecord', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('241', '盘点记录', NULL, '/inventoryRecord', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('25', '任务监控', NULL, '/taskMonitor', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('26', '库位监控', NULL, '/location', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('27', '料箱监控', NULL, '/vehicle', '2'); +INSERT INTO `tbl_sys_menu` VALUES ('3', '系统', 'Setting', NULL, '0'); +INSERT INTO `tbl_sys_menu` VALUES ('31', '用户', NULL, '/user', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('32', '角色', NULL, '/role', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('33', '菜单', NULL, '/menu', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('34', '库口设置', NULL, '/standSettings', '3'); +INSERT INTO `tbl_sys_menu` VALUES ('35', '系统配置', NULL, '/config', '3'); + +-- ---------------------------- +-- Table structure for tbl_sys_permission +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_permission`; +CREATE TABLE `tbl_sys_permission` ( + `permission_id` int NOT NULL AUTO_INCREMENT COMMENT '权限编号', + `menu_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜单编号', + `role_id` int NOT NULL COMMENT '角色编号', + PRIMARY KEY (`permission_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 53 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_permission +-- ---------------------------- +INSERT INTO `tbl_sys_permission` VALUES (1, '1', 1); +INSERT INTO `tbl_sys_permission` VALUES (2, '11', 1); +INSERT INTO `tbl_sys_permission` VALUES (3, '12', 1); +INSERT INTO `tbl_sys_permission` VALUES (4, '13', 1); +INSERT INTO `tbl_sys_permission` VALUES (5, '2', 1); +INSERT INTO `tbl_sys_permission` VALUES (6, '21', 1); +INSERT INTO `tbl_sys_permission` VALUES (7, '22', 1); +INSERT INTO `tbl_sys_permission` VALUES (8, '23', 1); +INSERT INTO `tbl_sys_permission` VALUES (9, '24', 1); +INSERT INTO `tbl_sys_permission` VALUES (10, '241', 1); +INSERT INTO `tbl_sys_permission` VALUES (11, '25', 1); +INSERT INTO `tbl_sys_permission` VALUES (12, '26', 1); +INSERT INTO `tbl_sys_permission` VALUES (13, '27', 1); +INSERT INTO `tbl_sys_permission` VALUES (14, '3', 1); +INSERT INTO `tbl_sys_permission` VALUES (15, '31', 1); +INSERT INTO `tbl_sys_permission` VALUES (16, '32', 1); +INSERT INTO `tbl_sys_permission` VALUES (17, '33', 1); +INSERT INTO `tbl_sys_permission` VALUES (18, '34', 1); +INSERT INTO `tbl_sys_permission` VALUES (19, '35', 1); + +-- ---------------------------- +-- Table structure for tbl_sys_role +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_role`; +CREATE TABLE `tbl_sys_role` ( + `role_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '角色编号', + `role_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '角色名称', + PRIMARY KEY (`role_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_role +-- ---------------------------- +INSERT INTO `tbl_sys_role` VALUES ('1', '管理员'); +INSERT INTO `tbl_sys_role` VALUES ('2', '普通用户'); + +-- ---------------------------- +-- Table structure for tbl_sys_settings +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_settings`; +CREATE TABLE `tbl_sys_settings` ( + `setting_id` int NOT NULL COMMENT '设置id', + `setting_key` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置键', + `setting_value` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置值', + `setting_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置类型:1.输入框2.下拉多选3.下拉单选', + `setting_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '配置显示名称', + PRIMARY KEY (`setting_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of tbl_sys_settings +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tbl_sys_user +-- ---------------------------- +DROP TABLE IF EXISTS `tbl_sys_user`; +CREATE TABLE `tbl_sys_user` ( + `user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `user_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名', + `role_id` int NULL DEFAULT NULL COMMENT '角色', + `login_account` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录账号', + `login_password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录密码', + `add_time` datetime NULL DEFAULT NULL, + `update_time` datetime NULL DEFAULT NULL, + `add_user` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '添加人', + PRIMARY KEY (`user_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of tbl_sys_user +-- ---------------------------- +INSERT INTO `tbl_sys_user` VALUES (1, '管理员', 1, 'admin', '812C0C84E2970FA98456DDC5B0B59594', '2023-03-23 11:17:06', '2023-03-23 11:17:10', '系统'); + +SET FOREIGN_KEY_CHECKS = 1;