From 94212a8ceccb24b6f37a07b2ed1f31631da281fa Mon Sep 17 00:00:00 2001 From: TautCony Date: Mon, 26 Aug 2024 16:03:09 +0800 Subject: [PATCH] chore: upgrade deps --- composer.lock | 1082 ++++++-- phpstan.neon | 1 + setup/dashboard/.eslintrc.js | 38 - setup/dashboard/eslint.config.mjs | 34 + setup/dashboard/inc/panel.app_service.ws.js | 1 - setup/dashboard/package-lock.json | 2465 ++--------------- setup/dashboard/package.json | 11 +- setup/dashboard/ws/.eslintrc.js | 188 -- setup/dashboard/ws/dist/server.js | 2 +- setup/dashboard/ws/eslint.config.mjs | 171 ++ setup/dashboard/ws/package-lock.json | 1618 +++++++---- setup/dashboard/ws/package.json | 63 +- setup/dashboard/ws/src/constant.ts | 1 + setup/dashboard/ws/src/handler/exec.ts | 2 - setup/dashboard/ws/src/handler/i18n.ts | 2 - setup/dashboard/ws/src/handler/log.ts | 2 - setup/dashboard/ws/src/handler/message.ts | 4 +- .../dashboard/ws/src/handler/utils/command.ts | 12 +- setup/dashboard/ws/src/info.ts | 6 +- setup/dashboard/ws/src/libs/i18n/I18n.ts | 1654 +++++------ .../src/libs/i18n/helpers/expandRoundMode.ts | 1 + setup/dashboard/ws/src/libs/i18n/typing.ts | 10 +- setup/dashboard/ws/src/utils/vnstat.ts | 1 + setup/dashboard/ws/src/widgets/disk_data.tsx | 1 + setup/dashboard/ws/src/widgets/net_status.ts | 2 +- 25 files changed, 3272 insertions(+), 4100 deletions(-) delete mode 100644 setup/dashboard/.eslintrc.js create mode 100644 setup/dashboard/eslint.config.mjs delete mode 100644 setup/dashboard/ws/.eslintrc.js create mode 100644 setup/dashboard/ws/eslint.config.mjs diff --git a/composer.lock b/composer.lock index 51317950..bcf45d71 100644 --- a/composer.lock +++ b/composer.lock @@ -7,32 +7,104 @@ "content-hash": "ffa15e25ea1870fc5ca335fd7c7d2497", "packages": [], "packages-dev": [ + { + "name": "clue/ndjson-react", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\NDJson\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" + }, { "name": "composer/pcre", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" + "reference": "1637e067347a0c40bbb1e3cd786b20dcab556a81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "url": "https://api.github.com/repos/composer/pcre/zipball/1637e067347a0c40bbb1e3cd786b20dcab556a81", + "reference": "1637e067347a0c40bbb1e3cd786b20dcab556a81", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", + "phpstan/phpstan": "^1.11.10", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -60,7 +132,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.1" + "source": "https://github.com/composer/pcre/tree/3.3.0" }, "funding": [ { @@ -76,20 +148,20 @@ "type": "tidelift" } ], - "time": "2023-10-11T07:11:09+00:00" + "time": "2024-08-19T19:43:53+00:00" }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", "shasum": "" }, "require": { @@ -141,7 +213,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.4.2" }, "funding": [ { @@ -157,20 +229,20 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2024-07-12T11:35:52+00:00" }, { "name": "composer/xdebug-handler", - "version": "3.0.3", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { @@ -181,7 +253,7 @@ "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -205,9 +277,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -223,30 +295,145 @@ "type": "tidelift" } ], - "time": "2022-02-25T21:32:43+00:00" + "time": "2024-05-06T16:37:16+00:00" + }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.46.0", + "version": "v3.62.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "be6831c9af1740470d2a773119b9273f8ac1c3d2" + "reference": "627692f794d35c43483f34b01d94740df2a73507" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/be6831c9af1740470d2a773119b9273f8ac1c3d2", - "reference": "be6831c9af1740470d2a773119b9273f8ac1c3d2", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/627692f794d35c43483f34b01d94740df2a73507", + "reference": "627692f794d35c43483f34b01d94740df2a73507", "shasum": "" }, "require": { + "clue/ndjson-react": "^1.0", "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", @@ -259,15 +446,17 @@ "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", + "facile-it/paraunit": "^1.3 || ^2.3", + "infection/infection": "^0.29.5", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6 || ^10.5.5", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5", + "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -281,7 +470,10 @@ "autoload": { "psr-4": { "PhpCsFixer\\": "src/" - } + }, + "exclude-from-classmap": [ + "src/Fixer/Internal/*" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -306,7 +498,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.46.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.62.0" }, "funding": [ { @@ -314,20 +506,20 @@ "type": "github" } ], - "time": "2024-01-03T21:38:46+00:00" + "time": "2024-08-07T17:03:09+00:00" }, { "name": "phpstan/extension-installer", - "version": "1.3.1", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", - "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f6b87faf9fc7978eab2f7919a8760bc9f58f9203", + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203", "shasum": "" }, "require": { @@ -356,22 +548,22 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" + "source": "https://github.com/phpstan/extension-installer/tree/1.4.1" }, - "time": "2023-05-24T08:59:17+00:00" + "time": "2024-06-10T08:20:49+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.55", + "version": "1.11.11", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949" + "reference": "707c2aed5d8d0075666e673a5e71440c1d01a5a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/707c2aed5d8d0075666e673a5e71440c1d01a5a3", + "reference": "707c2aed5d8d0075666e673a5e71440c1d01a5a3", "shasum": "" }, "require": { @@ -414,31 +606,27 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2024-01-08T12:32:40+00:00" + "time": "2024-08-19T14:37:29+00:00" }, { "name": "phpstan/phpstan-strict-rules", - "version": "1.5.2", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542" + "reference": "363f921dd8441777d4fc137deb99beb486c77df1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/7a50e9662ee9f3942e4aaaf3d603653f60282542", - "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/363f921dd8441777d4fc137deb99beb486c77df1", + "reference": "363f921dd8441777d4fc137deb99beb486c77df1", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.34" + "phpstan/phpstan": "^1.11" }, "require-dev": { "nikic/php-parser": "^4.13.0", @@ -467,9 +655,9 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.2" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.6.0" }, - "time": "2023-10-30T14:35:06+00:00" + "time": "2024-04-20T06:37:51+00:00" }, { "name": "psr/container", @@ -619,18 +807,548 @@ }, "time": "2021-05-03T11:20:27+00:00" }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.16.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.13", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3.3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.16.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-07-26T10:38:09+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -675,7 +1393,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -683,20 +1401,20 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "symfony/console", - "version": "v5.4.34", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" + "reference": "cef62396a0477e94fc52e87a17c6e5c32e226b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", - "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", + "url": "https://api.github.com/repos/symfony/console/zipball/cef62396a0477e94fc52e87a17c6e5c32e226b7f", + "reference": "cef62396a0477e94fc52e87a17c6e5c32e226b7f", "shasum": "" }, "require": { @@ -766,7 +1484,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.34" + "source": "https://github.com/symfony/console/tree/v5.4.42" }, "funding": [ { @@ -782,20 +1500,20 @@ "type": "tidelift" } ], - "time": "2023-12-08T13:33:03+00:00" + "time": "2024-07-26T12:21:55+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "80d075412b557d41002320b96a096ca65aa2c98d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/80d075412b557d41002320b96a096ca65aa2c98d", + "reference": "80d075412b557d41002320b96a096ca65aa2c98d", "shasum": "" }, "require": { @@ -833,7 +1551,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.3" }, "funding": [ { @@ -849,20 +1567,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-01-24T14:02:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.34", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3" + "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e3bca343efeb613f843c254e7718ef17c9bdf7a3", - "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a54e2a8a114065f31020d6a89ede83e34c3b27a4", + "reference": "a54e2a8a114065f31020d6a89ede83e34c3b27a4", "shasum": "" }, "require": { @@ -918,7 +1636,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.34" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.40" }, "funding": [ { @@ -934,20 +1652,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T21:12:56+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + "reference": "540f4c73e87fd0c71ca44a6aa305d024ac68cb73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/540f4c73e87fd0c71ca44a6aa305d024ac68cb73", + "reference": "540f4c73e87fd0c71ca44a6aa305d024ac68cb73", "shasum": "" }, "require": { @@ -997,7 +1715,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.3" }, "funding": [ { @@ -1013,20 +1731,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.25", + "version": "v5.4.41", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "reference": "6d29dd9340b372fa603f04e6df4dd76bb808591e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6d29dd9340b372fa603f04e6df4dd76bb808591e", + "reference": "6d29dd9340b372fa603f04e6df4dd76bb808591e", "shasum": "" }, "require": { @@ -1035,6 +1753,9 @@ "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, + "require-dev": { + "symfony/process": "^5.4|^6.4" + }, "type": "library", "autoload": { "psr-4": { @@ -1061,7 +1782,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/filesystem/tree/v5.4.41" }, "funding": [ { @@ -1077,20 +1798,20 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2024-06-28T09:36:24+00:00" }, { "name": "symfony/finder", - "version": "v5.4.27", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "reference": "0724c51fa067b198e36506d2864e09a52180998a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/0724c51fa067b198e36506d2864e09a52180998a", + "reference": "0724c51fa067b198e36506d2864e09a52180998a", "shasum": "" }, "require": { @@ -1124,7 +1845,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/finder/tree/v5.4.42" }, "funding": [ { @@ -1140,20 +1861,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2024-07-22T08:53:29+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.21", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/bd1afbde6613a8d6b956115e0e14b196191fd0c4", + "reference": "bd1afbde6613a8d6b956115e0e14b196191fd0c4", "shasum": "" }, "require": { @@ -1193,7 +1914,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.40" }, "funding": [ { @@ -1209,20 +1930,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", "shasum": "" }, "require": { @@ -1236,9 +1957,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1275,7 +1993,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" }, "funding": [ { @@ -1291,20 +2009,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { @@ -1315,9 +2033,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1356,7 +2071,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -1372,20 +2087,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { @@ -1396,9 +2111,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1440,7 +2152,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { @@ -1456,20 +2168,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { @@ -1483,9 +2195,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1523,7 +2232,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, "funding": [ { @@ -1539,20 +2248,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/ec444d3f3f6505bb28d11afa41e75faadebc10a1", + "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1", "shasum": "" }, "require": { @@ -1560,9 +2269,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1602,7 +2308,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.30.0" }, "funding": [ { @@ -1618,20 +2324,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", "shasum": "" }, "require": { @@ -1639,9 +2345,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1685,7 +2388,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" }, "funding": [ { @@ -1701,20 +2404,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.28.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", "shasum": "" }, "require": { @@ -1722,9 +2425,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -1764,7 +2464,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" }, "funding": [ { @@ -1780,20 +2480,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/process", - "version": "v5.4.34", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a" + "reference": "deedcb3bb4669cae2148bc920eafd2b16dc7c046" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a", - "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a", + "url": "https://api.github.com/repos/symfony/process/zipball/deedcb3bb4669cae2148bc920eafd2b16dc7c046", + "reference": "deedcb3bb4669cae2148bc920eafd2b16dc7c046", "shasum": "" }, "require": { @@ -1826,7 +2526,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.34" + "source": "https://github.com/symfony/process/tree/v5.4.40" }, "funding": [ { @@ -1842,20 +2542,20 @@ "type": "tidelift" } ], - "time": "2023-12-02T08:41:43+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3", + "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3", "shasum": "" }, "require": { @@ -1909,7 +2609,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.3" }, "funding": [ { @@ -1925,20 +2625,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2023-04-21T15:04:16+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.21", + "version": "v5.4.40", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0e9daf3b7c805c747638b2cc48f1649e594f9625", + "reference": "0e9daf3b7c805c747638b2cc48f1649e594f9625", "shasum": "" }, "require": { @@ -1971,7 +2671,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.40" }, "funding": [ { @@ -1987,20 +2687,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-05-31T14:33:22+00:00" }, { "name": "symfony/string", - "version": "v5.4.34", + "version": "v5.4.42", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" + "reference": "909cec913edea162a3b2836788228ad45fcab337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", - "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", + "url": "https://api.github.com/repos/symfony/string/zipball/909cec913edea162a3b2836788228ad45fcab337", + "reference": "909cec913edea162a3b2836788228ad45fcab337", "shasum": "" }, "require": { @@ -2057,7 +2757,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.34" + "source": "https://github.com/symfony/string/tree/v5.4.42" }, "funding": [ { @@ -2073,7 +2773,7 @@ "type": "tidelift" } ], - "time": "2023-12-09T13:20:28+00:00" + "time": "2024-07-20T18:38:32+00:00" } ], "aliases": [], diff --git a/phpstan.neon b/phpstan.neon index af689546..7a86366c 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -6,3 +6,4 @@ parameters: - setup/dashboard/node_modules - setup/dashboard/ws/node_modules - setup/dashboard/lib/node_modules + treatPhpDocTypesAsCertain: false diff --git a/setup/dashboard/.eslintrc.js b/setup/dashboard/.eslintrc.js deleted file mode 100644 index 14490a83..00000000 --- a/setup/dashboard/.eslintrc.js +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -"use strict"; - -module.exports = { - "root": true, - "env": { - "browser": true, - "es6": true, - "jquery": true - }, - "ignorePatterns": [ - "build", - "dist", - "node_modules", - "**/*.ts" - ], - "extends": [ - "eslint:recommended", - "standard" - ], - "rules": { - "semi": [ - "error", - "always" - ], - "quotes": [ - "error", - "double" - ], - "quote-props": [ - "off" - ], - "camelcase": [ - "off" - ] - } -}; diff --git a/setup/dashboard/eslint.config.mjs b/setup/dashboard/eslint.config.mjs new file mode 100644 index 00000000..4a14028e --- /dev/null +++ b/setup/dashboard/eslint.config.mjs @@ -0,0 +1,34 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import standard from "eslint-config-standard"; +import pluginN from "eslint-plugin-n"; +import pluginPromise from "eslint-plugin-promise"; +import pluginImport from "eslint-plugin-import"; + +export default [{ + files: ["**/*.js"], + ignores: ["**/build", "**/dist", "**/node_modules", "**/*.ts"], + languageOptions: { + globals: { + ...globals.browser, + ...globals.jquery + } + } +}, +pluginJs.configs.recommended, +{ + plugins: { + n: pluginN, + import: pluginImport, + promise: pluginPromise + }, + rules: standard.rules +}, +{ + rules: { + semi: ["error", "always"], + quotes: ["error", "double"], + "quote-props": ["off"], + camelcase: ["off"] + } +}]; diff --git a/setup/dashboard/inc/panel.app_service.ws.js b/setup/dashboard/inc/panel.app_service.ws.js index fde0756c..6761a554 100644 --- a/setup/dashboard/inc/panel.app_service.ws.js +++ b/setup/dashboard/inc/panel.app_service.ws.js @@ -3,7 +3,6 @@ /* global bootbox, AnsiUp, socket */ "use strict"; -// eslint-disable-next-line no-unused-vars (function ($) { function showAlert (message) { bootbox.alert({ diff --git a/setup/dashboard/package-lock.json b/setup/dashboard/package-lock.json index aeed6dee..0cc1f408 100644 --- a/setup/dashboard/package-lock.json +++ b/setup/dashboard/package-lock.json @@ -1,7 +1,7 @@ { "name": "quickbox-dashboard", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -12,13 +12,13 @@ "animate.css": "^4.1.1", "ansi_up": "^5.2.1", "bootbox": "^5.5.3", - "bootstrap": "3.4.1", + "bootstrap": "^5.3.3", "datatables": "^1.10.18", "font-awesome": "^4.7.0", "gritter": "^1.7.4", "jquery": "^3.7.1", "jquery-toggles": "^4.0.0", - "jquery-ui": "^1.13.2", + "jquery-ui": "^1.14.0", "jquery-ui-touch-punch": "^0.2.3", "lazysizes": "^5.3.2", "lobipanel": "^1.0.0", @@ -28,11 +28,14 @@ "visibilityjs": "^2.0.2" }, "devDependencies": { - "eslint": "^8.57.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "eslint": "^9.9.1", "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-promise": "^6.1.1" + "eslint-plugin-n": "^17.10.2", + "eslint-plugin-promise": "^7.1.0", + "globals": "^15.9.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -60,24 +63,38 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -85,33 +102,40 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -127,11 +151,18 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -168,6 +199,16 @@ "node": ">= 8" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -179,16 +220,10 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -402,11 +437,21 @@ } }, "node_modules/bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "engines": { - "node": ">=6" + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" } }, "node_modules/brace-expansion": { @@ -419,27 +464,6 @@ "concat-map": "0.0.1" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -578,27 +602,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/engine.io-client": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", - "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", + "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.0.0" } }, @@ -610,6 +622,19 @@ "node": ">=10.0.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/es-abstract": { "version": "1.22.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", @@ -716,41 +741,37 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -764,10 +785,18 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-compat-utils": { @@ -939,56 +968,80 @@ } }, "node_modules/eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", + "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", + "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", + "globals": "^15.8.0", "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", + "minimatch": "^9.0.5", "semver": "^7.5.3" }, "engines": { - "node": ">=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": ">=7.0.0" + "eslint": ">=8.23.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1006,6 +1059,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1077,17 +1142,29 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1163,34 +1240,34 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/font-awesome": { @@ -1210,12 +1287,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -1295,26 +1366,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -1328,15 +1379,12 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1369,10 +1417,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/gritter": { @@ -1495,22 +1543,6 @@ "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, "node_modules/internal-slot": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", @@ -1567,21 +1599,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -1786,11 +1803,11 @@ "integrity": "sha1-gg7r/7Y9redkTrW8VhmPAhRybBk=" }, "node_modules/jquery-ui": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.0.tgz", + "integrity": "sha512-mPfYKBoRCf0MzaT2cyW5i3IuZ7PfTITaasO5OFLAQxrHuI+ZxruPa+4/K1OMNT8oElLWGtIxc9aRbyw20BKr8g==", "dependencies": { - "jquery": ">=1.8.0 <4.0.0" + "jquery": ">=1.12.0 <5.0.0" } }, "node_modules/jquery-ui-touch-punch": { @@ -1810,6 +1827,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1834,6 +1857,15 @@ "json5": "lib/cli.js" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/lazysizes": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", @@ -1863,18 +1895,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -1989,15 +2009,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -2027,15 +2038,6 @@ "node": ">=6" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -2167,21 +2169,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -2243,13 +2230,10 @@ "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2449,6 +2433,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2479,18 +2472,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -2635,22 +2616,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -2669,12 +2644,6 @@ "node": ">=0.4.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -2687,1909 +2656,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "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" - } - }, - "animate.css": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz", - "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==" - }, - "ansi_up": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-5.2.1.tgz", - "integrity": "sha512-5bz5T/7FRmlxA37zDXhG6cAwlcZtfnmNLDJra66EEIT3kYlw5aPJdbkJEhm59D6kA4Wi5ict6u6IDYHJaQlH+g==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - } - }, - "array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "bootbox": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/bootbox/-/bootbox-5.5.3.tgz", - "integrity": "sha512-B4mnm1DYgNHzoNtD7I0L/fixqvya4EEQy5bFF/yNmGI2Eq3WwVVwdfWf3hoF8KS+EaV4f0uIMqtxB1EAZwZPhQ==", - "requires": {} - }, - "bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "requires": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "datatables": { - "version": "1.10.18", - "resolved": "https://registry.npmjs.org/datatables/-/datatables-1.10.18.tgz", - "integrity": "sha512-ntatMgS9NN6UMpwbmO+QkYJuKlVeMA2Mi0Gu/QxyIh+dW7ZjLSDhPT2tWlzjpIWEkDYgieDzS9Nu7bdQCW0sbQ==", - "requires": { - "jquery": ">=1.7" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "engine.io-client": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", - "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==" - }, - "es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - } - }, - "es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", - "dev": true, - "requires": {} - }, - "eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-es-x": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", - "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.1.2" - } - }, - "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", - "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", - "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" - } - }, - "eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "requires": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", - "dev": true, - "requires": { - "resolve-pkg-maps": "^1.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "gritter": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/gritter/-/gritter-1.7.4.tgz", - "integrity": "sha1-zbg5gr0Z4s6TvnOXHhMgoyYRM+E=" - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.2" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "requires": { - "builtin-modules": "^3.3.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "requires": { - "hasown": "^2.0.0" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "requires": { - "which-typed-array": "^1.1.11" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" - }, - "jquery-toggles": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jquery-toggles/-/jquery-toggles-4.0.0.tgz", - "integrity": "sha1-gg7r/7Y9redkTrW8VhmPAhRybBk=" - }, - "jquery-ui": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", - "requires": { - "jquery": ">=1.8.0 <4.0.0" - } - }, - "jquery-ui-touch-punch": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/jquery-ui-touch-punch/-/jquery-ui-touch-punch-0.2.3.tgz", - "integrity": "sha1-7tgiQnM7okP0az6HwYQbMIGR2mg=" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "lazysizes": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", - "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==" - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lobipanel": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lobipanel/-/lobipanel-1.0.0.tgz", - "integrity": "sha512-1FYd+rOl3pQfZ1byFvBg6FRwVB0KXrtOe6nHOV2RvLrDt7HZG+CxN2U9lCpmOvFEwlAu1Et5kytP1l24PJ0aRg==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, - "object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "perfect-scrollbar": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", - "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "peer": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - } - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - } - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "select2": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", - "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dev": true, - "requires": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "socket.io-client": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", - "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.5.2", - "socket.io-parser": "~4.2.4" - } - }, - "socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "visibilityjs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/visibilityjs/-/visibilityjs-2.0.2.tgz", - "integrity": "sha512-y5sN5oGvuXXcK6s8WupOymRcqEss7kusojpScRqkT+cTCIFjul+06uSMDPMByN9DIBv/sUUnvV8BplKjqelAfw==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "requires": {} - }, - "xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } } } diff --git a/setup/dashboard/package.json b/setup/dashboard/package.json index 6875826d..40adeac0 100644 --- a/setup/dashboard/package.json +++ b/setup/dashboard/package.json @@ -2,7 +2,7 @@ "name": "quickbox-dashboard", "version": "1.0.0", "scripts": { - "lint": "eslint ./inc ./js --ext .js", + "lint": "eslint ./inc ./js", "audit": "npm audit --registry=https://registry.npmjs.org", "upgrade": "npx npm-check -u" }, @@ -28,10 +28,13 @@ "visibilityjs": "^2.0.2" }, "devDependencies": { - "eslint": "^8.57.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "eslint": "^9.9.1", "eslint-config-standard": "^17.1.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-promise": "^6.1.1" + "eslint-plugin-n": "^17.10.2", + "eslint-plugin-promise": "^7.1.0", + "globals": "^15.9.0" } } diff --git a/setup/dashboard/ws/.eslintrc.js b/setup/dashboard/ws/.eslintrc.js deleted file mode 100644 index 38e8384b..00000000 --- a/setup/dashboard/ws/.eslintrc.js +++ /dev/null @@ -1,188 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-or-later - -module.exports = { - "root": true, - "env": { - "browser": true, - "es6": true, - "node": true - }, - "ignorePatterns": [ - "build", - "dist", - "node_modules", - "**/*.js" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "./tsconfig.json", - "tsconfigRootDir": __dirname, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint" - ], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "@typescript-eslint/adjacent-overload-signatures": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/ban-types": "error", - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/consistent-type-definitions": "error", - "@typescript-eslint/explicit-member-accessibility": [ - "error", - { - "accessibility": "explicit" - } - ], - "@typescript-eslint/indent": "error", - "@typescript-eslint/interface-name-prefix": "off", - "@typescript-eslint/member-delimiter-style": [ - "error", - { - "multiline": { - "delimiter": "semi", - "requireLast": true - }, - "singleline": { - "delimiter": "semi", - "requireLast": false - } - } - ], - "@typescript-eslint/member-ordering": "error", - "@typescript-eslint/no-empty-function": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "off", - "@typescript-eslint/no-non-null-assertion": "error", - "@typescript-eslint/no-parameter-properties": "off", - "@typescript-eslint/no-require-imports": "off", - "@typescript-eslint/no-this-alias": "error", - "@typescript-eslint/no-unnecessary-qualifier": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "off", - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/prefer-for-of": "error", - "@typescript-eslint/prefer-function-type": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/quotes": [ - "error", - "double", - { - "avoidEscape": true - } - ], - "@typescript-eslint/semi": [ - "error", - "always" - ], - "@typescript-eslint/triple-slash-reference": "error", - "@typescript-eslint/type-annotation-spacing": "error", - "@typescript-eslint/unbound-method": "error", - "@typescript-eslint/unified-signatures": "error", - "@typescript-eslint/adjacent-overload-signatures": "off", - "arrow-body-style": "error", - "arrow-parens": [ - "off", - "as-needed" - ], - "camelcase": "error", - "class-methods-use-this": "error", - "complexity": "error", - "constructor-super": "error", - "curly": "error", - "default-case": "off", - "dot-notation": "off", - "eol-last": "error", - "eqeqeq": [ - "error", - "always" - ], - "guard-for-in": "error", - "id-blacklist": [ - "error", - "any", - ], - "id-match": "error", - "import/no-internal-modules": "off", - "import/order": "off", - "linebreak-style": "off", - "max-classes-per-file": "off", - "max-len": "off", - "new-parens": "error", - "no-bitwise": "off", - "no-caller": "error", - "no-cond-assign": "error", - "no-console": "off", - "no-debugger": "error", - "no-duplicate-case": "error", - "no-duplicate-imports": "error", - "no-empty": "error", - "no-eval": "error", - "no-extra-bind": "error", - "no-fallthrough": "error", - "no-invalid-this": "off", - "no-magic-numbers": "off", - "no-multiple-empty-lines": "error", - "no-new-func": "error", - "no-new-wrappers": "error", - "no-null/no-null": "off", - "no-redeclare": "error", - "no-return-await": "error", - "no-sequences": "error", - "no-shadow": "off", - "no-sparse-arrays": "error", - "no-template-curly-in-string": "error", - "no-throw-literal": "error", - "no-trailing-spaces": "error", - "no-undef-init": "error", - "no-underscore-dangle": "error", - "no-unsafe-finally": "error", - "no-unused-expressions": "error", - "no-unused-labels": "error", - "no-var": "error", - "no-void": "error", - "object-shorthand": "error", - "one-var": [ - "error", - "never" - ], - "padding-line-between-statements": [ - "off", - { - "blankLine": "always", - "prev": "*", - "next": "return" - } - ], - "prefer-const": "error", - "prefer-object-spread": "error", - "quote-props": [ - "error", - "consistent-as-needed" - ], - "radix": "error", - "space-before-function-paren": [ - "error", - { - "anonymous": "never", - "asyncArrow": "always", - "named": "never" - } - ], - "spaced-comment": [ - "error", - "always" - ], - "use-isnan": "error", - "valid-typeof": "off", - "space-in-parens": "off", - "comma-dangle": ["error", "always-multiline"] - } -}; diff --git a/setup/dashboard/ws/dist/server.js b/setup/dashboard/ws/dist/server.js index feebd8e7..8e34211b 100644 --- a/setup/dashboard/ws/dist/server.js +++ b/setup/dashboard/ws/dist/server.js @@ -1 +1 @@ -(()=>{"use strict";var e={8680:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.username=void 0;const i=r(9896);class n{}n.EVENT_CONNECTION="connection",n.EVENT_DISCONNECT="disconnect",n.EVENT_MESSAGE="message",n.EVENT_EXEC="exec",n.EVENT_I18N="i18n",n.TEMPLATE_OPERATION="$operation$",n.TEMPLATE_TARGET="$target$",n.TEMPLATE_USERNAME="$username$",t.default=n,t.username=function(){let e="";try{const t="/srv/dashboard/db/master.txt";if((0,i.existsSync)(t)){e=(0,i.readFileSync)(t,{encoding:"utf8"}).split("\n")[0].trim()}else console.error("Quickbox-Lite user info not found")}catch(e){console.error("Failed to read Quickbox-Lite user info",e)}return e}()},9168:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&i(t,e,r);return n(t,e),t},s=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=r(5317),u=o(r(9896)),d=o(r(6928)),c=a(r(8680)),m=r(4894),T=r(8750);let b=__dirname,f="",g=3;for(;g-- >0;){const e=d.default.join(b,"config","commands.json");if(u.default.existsSync(e)){f=e;break}b=d.default.join(b,"..")}f||console.error("commonds.json not found for quickbox-ws");const p=new m.WatchedConfig(f),h={env:Object.assign({TERM:"xterm"},process.env),timeout:684e4,maxBuffer:5242880};t.default=(e,t)=>{e.on(c.default.EVENT_EXEC,(t=>((e,t)=>s(void 0,void 0,void 0,(function*(){const r={cmd:e,success:!0,message:"",stdout:"",stderr:""};let i;try{i=(0,T.buildCommand)(e,p,c.username)}catch(e){return r.success=!1,r.message="Invalid Command",e instanceof Error&&(r.message=e.message),void t.emit(c.default.EVENT_EXEC,r)}(0,l.exec)(i,h,((e,i,n)=>{r.stdout=i,r.stderr=n,e&&(r.success=!1,r.message="Execution Failed",e.killed&&"SIGTERM"===e.signal&&(r.message="Execution Timeout")),t.emit(c.default.EVENT_EXEC,r)}))})))(t,e))),t&&t()}},7397:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(r(8680)),a=i(r(612));t.default=(e,t)=>{e.on(n.default.EVENT_I18N,(t=>{console.log(`${e.id} set lang as ${t}`),a.default.locale=t})),t&&t()}},6411:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(r(8680));t.default=(e,t)=>{const r=e.handshake.headers["x-forwarded-for"]||e.handshake.address;console.log(`${e.id} connect from ${r}`),e.on(n.default.EVENT_DISCONNECT,(()=>{console.log(`${e.id} disconnect`)})),t&&t()}},6190:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(r(8938)),s=n(r(5692)),o=n(r(8680)),l=r(9378),u=r(7020),d=r(4589),c=r(5146),m=r(6272),T=r(7892),b=r(8019),f=a.default.create({baseURL:"http://127.0.0.1",timeout:5e3,httpsAgent:new s.default.Agent({rejectUnauthorized:!1})}),g=(0,T.getIfaceConfig)(),p=(e,t)=>i(void 0,void 0,void 0,(function*(){const r={key:e.key,pathName:e.url,success:!0,message:"",response:""};try{const t=(e=>{let t;t=e.toLowerCase().startsWith("http")?new URL(e):new URL(e,"http://localhost");const r=t.pathname,i={};return t.searchParams.forEach(((e,t)=>{i[t]=e})),{pathname:r,args:i}})(e.url);switch(t.pathname){case"/node/load.php":r.response=yield(0,l.widgetsLoad)();break;case"/node/net_status.php":r.response=yield(0,u.netStatus)();break;case"/node/up.php":r.response=(0,d.upTime)();break;case"/node/disk_data.php":r.response=yield(0,c.diskData)();break;case"/node/ram_stats.php":r.response=yield(0,m.ramStats)();break;case"/node/bw_tables.php":r.response=yield(0,b.bwTables)(g,t.args.page);break;default:r.response=(yield f.get(t.pathname,{params:t.args})).data}}catch(e){r.message=e instanceof Error?e.toString():"Unknown error",r.success=!1}finally{t.send(r)}}));t.default=(e,t)=>{e.on(o.default.EVENT_MESSAGE,(t=>p(t,e))),t&&t()}},8750:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.buildCommand=t.getFiles=void 0;const n=i(r(9896)),a=i(r(8680)),s=r(4894);t.getFiles=function(e){const t=[];return n.default.existsSync(e)?n.default.readdirSync(e,{withFileTypes:!0}).filter((e=>e.isFile())).map((e=>e.name)):t},t.buildCommand=function(e,t,r){if(!e)throw new Error(`Invalid payload with type '${Object.prototype.toString.call(e)}'`);if(!t)throw new Error(`Invalid config with type '${Object.prototype.toString.call(t)}'`);let[i,n,o]=e.split(":");if(void 0===i||void 0===n||void 0===o)throw new Error(`Invalid payload '${e}'`);i=i.trim(),n=n.trim(),o=o.trim();const l=t instanceof s.WatchedConfig?t.Value[i]:t[i];if(void 0===l)throw new Error(`Command '${i}' not found`);let u=l.template;if(u.includes(a.default.TEMPLATE_OPERATION)){const e=l.operations.find((e=>e===n));if(void 0===e)throw new Error(`Operation '${n}' not found`);u=u.replace(a.default.TEMPLATE_OPERATION,e)}else if(""!==n)throw new Error(`Unexpected operation '${n}' is provided`);if(u.includes(a.default.TEMPLATE_TARGET)){const e=l.targets.find((e=>e===o||e===o+`@${a.default.TEMPLATE_USERNAME}`));if(void 0===e)throw new Error(`Target '${o}' not found`);u=u.replace(a.default.TEMPLATE_TARGET,e)}else if(""!==o)throw new Error(`Unexpected target '${o}' is provided`);if(u.includes(a.default.TEMPLATE_USERNAME)){if(!r)throw new Error(`Invalid username with type '${Object.prototype.toString.call(r)}'`);u=u.replace(a.default.TEMPLATE_USERNAME,r)}if(u.includes(a.default.TEMPLATE_OPERATION)||u.includes(a.default.TEMPLATE_TARGET)||u.includes(a.default.TEMPLATE_USERNAME))throw new Error(`Invalid template '${u}'`);return u}},612:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=r(7380),a=i(r(1699)),s=i(r(8127)),o=i(r(6247)),l=i(r(8880)),u=i(r(6964)),d=i(r(7893)),c=new n.I18n({da:a.default,de:s.default,en:o.default,es:l.default,fr:u.default,zh:d.default});t.default=c},1574:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.I18n=void 0;const n=r(7825),a=r(4567),s=r(6530),o=r(9469),l=r(2202),u={defaultLocale:"en",availableLocales:["en"],locale:"en",defaultSeparator:".",placeholder:/(?:\{\{|%\{)(.*?)(?:\}\}?)/gm,enableFallback:!1,missingBehavior:"message",missingTranslationPrefix:"",missingPlaceholder:(e,t)=>`[missing "${t}" value]`,nullPlaceholder:(e,t,r,i)=>e.missingPlaceholder(e,t,r,i),transformKey:e=>e};t.I18n=class{constructor(e={},t={}){this.onChangeHandlers=[],this.translations={},this.availableLocales=[],this.t=this.translate.bind(this),this.p=this.pluralize.bind(this),this.l=this.localize.bind(this),this.distanceOfTimeInWords=this.timeAgoInWords.bind(this),this._locale=u.locale,this._defaultLocale=u.defaultLocale,this._version=0;const{locale:r,enableFallback:i,missingBehavior:n,missingTranslationPrefix:d,missingPlaceholder:c,nullPlaceholder:m,defaultLocale:T,defaultSeparator:b,placeholder:f,transformKey:g}=Object.assign(Object.assign({},u),t);this.locale=r,this.defaultLocale=T,this.defaultSeparator=b,this.enableFallback=i,this.locale=r,this.missingBehavior=n,this.missingTranslationPrefix=d,this.missingPlaceholder=c,this.nullPlaceholder=m,this.placeholder=f,this.pluralization=new s.Pluralization(this),this.locales=new a.Locales(this),this.missingTranslation=new o.MissingTranslation(this),this.transformKey=g,this.interpolate=l.interpolate,this.store(e)}get locale(){return this._locale||this.defaultLocale||"en"}get defaultLocale(){return this._defaultLocale||"en"}get version(){return this._version}set locale(e){if("string"!=typeof e)throw new Error(`Expected newLocale to be a string; got ${(0,l.inferType)(e)}`);const t=this._locale!==e;this._locale=e,t&&this.hasChanged()}set defaultLocale(e){if("string"!=typeof e)throw new Error(`Expected newLocale to be a string; got ${(0,l.inferType)(e)}`);const t=this._defaultLocale!==e;this._defaultLocale=e,t&&this.hasChanged()}store(e){(0,n.merge)(this.translations,e),this.hasChanged()}translate(e,t){t=Object.assign({},t);let r;return(0,l.createTranslationOptions)(this,e,t).some((e=>((0,l.isSet)(e.scope)?r=(0,l.lookup)(this,e.scope,t):(0,l.isSet)(e.message)&&(r=e.message),null!=r)))?("string"==typeof r?r=this.interpolate(this,r,t):"object"==typeof r&&r&&(0,l.isSet)(t.count)&&(r=(0,l.pluralize)({i18n:this,count:t.count||0,scope:r,options:t,baseScope:(0,l.getFullScope)(this,e,t)})),t&&r instanceof Array&&(r=r.map((e=>"string"==typeof e?(0,l.interpolate)(this,e,t):e))),r):this.missingTranslation.get(e,t)}pluralize(e,t,r){return(0,l.pluralize)({i18n:this,count:e,scope:t,options:Object.assign({},r),baseScope:(0,l.getFullScope)(this,t,null!=r?r:{})})}localize(e,t,r){if(r=Object.assign({},r),null==t)return"";switch(e){case"currency":return this.numberToCurrency(t);case"number":return(0,l.formatNumber)(t,Object.assign({delimiter:",",precision:3,separator:".",significant:!1,stripInsignificantZeros:!1},(0,l.lookup)(this,"number.format")));case"percentage":return this.numberToPercentage(t);default:{let i;return i=e.match(/^(date|time)/)?this.toTime(e,t):t.toString(),(0,l.interpolate)(this,i,r)}}}toTime(e,t){const r=(0,l.parseDate)(t),i=(0,l.lookup)(this,e);return r.toString().match(/invalid/i)?r.toString():i?this.strftime(r,i):r.toString()}numberToCurrency(e,t={}){return(0,l.formatNumber)(e,Object.assign(Object.assign(Object.assign({delimiter:",",format:"%u%n",precision:2,separator:".",significant:!1,stripInsignificantZeros:!1,unit:"$"},(0,l.camelCaseKeys)(this.get("number.format"))),(0,l.camelCaseKeys)(this.get("number.currency.format"))),t))}numberToPercentage(e,t={}){return(0,l.formatNumber)(e,Object.assign(Object.assign(Object.assign({delimiter:"",format:"%n%",precision:3,stripInsignificantZeros:!1,separator:".",significant:!1},(0,l.camelCaseKeys)(this.get("number.format"))),(0,l.camelCaseKeys)(this.get("number.percentage.format"))),t))}numberToHumanSize(e,t={}){return(0,l.numberToHumanSize)(this,e,Object.assign(Object.assign(Object.assign({delimiter:"",precision:3,significant:!0,stripInsignificantZeros:!0,units:{billion:"Billion",million:"Million",quadrillion:"Quadrillion",thousand:"Thousand",trillion:"Trillion",unit:""}},(0,l.camelCaseKeys)(this.get("number.human.format"))),(0,l.camelCaseKeys)(this.get("number.human.storage_units"))),t))}numberToHuman(e,t={}){return(0,l.numberToHuman)(this,e,Object.assign(Object.assign(Object.assign({delimiter:"",separator:".",precision:3,significant:!0,stripInsignificantZeros:!0,format:"%n %u",roundMode:"default",units:{billion:"Billion",million:"Million",quadrillion:"Quadrillion",thousand:"Thousand",trillion:"Trillion",unit:""}},(0,l.camelCaseKeys)(this.get("number.human.format"))),(0,l.camelCaseKeys)(this.get("number.human.decimal_units"))),t))}numberToRounded(e,t){return(0,l.formatNumber)(e,Object.assign({unit:"",precision:3,significant:!1,separator:".",delimiter:"",stripInsignificantZeros:!1},t))}numberToDelimited(e,t={}){return(0,l.numberToDelimited)(e,Object.assign({delimiterPattern:/(\d)(?=(\d\d\d)+(?!\d))/g,delimiter:",",separator:"."},t))}withLocale(e,t){return i(this,void 0,void 0,(function*(){const r=this.locale;try{this.locale=e,yield t()}finally{this.locale=r}}))}strftime(e,t,r={}){return(0,l.strftime)(e,t,Object.assign(Object.assign(Object.assign({},(0,l.camelCaseKeys)((0,l.lookup)(this,"date"))),{meridian:{am:(0,l.lookup)(this,"time.am")||"AM",pm:(0,l.lookup)(this,"time.pm")||"PM"}}),r))}update(e,t,r={strict:!1}){if(r.strict&&!(0,n.has)(this.translations,e))throw new Error(`The path "${e}" is not currently defined`);const i=(0,n.get)(this.translations,e),a=(0,l.inferType)(i),s=(0,l.inferType)(t);if(r.strict&&a!==s)throw new Error(`The current type for "${e}" is "${a}", but you're trying to override it with "${s}"`);let o;o="object"===s?Object.assign(Object.assign({},i),t):t;const u=e.split(this.defaultSeparator),d=u.pop();let c=this.translations;for(const e of u)c[e]||(c[e]={}),c=c[e];c[d]=o,this.hasChanged()}toSentence(e,t={}){const{wordsConnector:r,twoWordsConnector:i,lastWordConnector:n}=Object.assign(Object.assign({wordsConnector:", ",twoWordsConnector:" and ",lastWordConnector:", and "},(0,l.camelCaseKeys)((0,l.lookup)(this,"support.array"))),t),a=e.length;switch(a){case 0:return"";case 1:return`${e[0]}`;case 2:return e.join(i);default:return[e.slice(0,a-1).join(r),n,e[a-1]].join("")}}timeAgoInWords(e,t,r={}){return(0,l.timeAgoInWords)(this,e,t,r)}onChange(e){return this.onChangeHandlers.push(e),()=>{this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(e),1)}}formatNumber(e,t){return(0,l.formatNumber)(e,t)}get(e){return(0,l.lookup)(this,e)}runCallbacks(){this.onChangeHandlers.forEach((e=>e(this)))}hasChanged(){this._version+=1,this.runCallbacks()}}},4567:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Locales=t.defaultLocaleResolver=void 0;const i=r(7825);t.defaultLocaleResolver=(e,t)=>{const r=[],n=[];return r.push(t),t||r.push(e.locale),e.enableFallback&&r.push(e.defaultLocale),r.filter(Boolean).map((e=>e.toString())).forEach((function(t){if(n.includes(t)||n.push(t),!e.enableFallback)return;const r=t.split("-");3===r.length&&n.push(`${r[0]}-${r[1]}`),n.push(r[0])})),(0,i.uniq)(n)};t.Locales=class{constructor(e){this.i18n=e,this.registry={},this.register("default",t.defaultLocaleResolver)}register(e,t){if("function"!=typeof t){const e=t;t=()=>e}this.registry[e]=t}get(e){let t=this.registry[e]||this.registry[this.i18n.locale]||this.registry.default;return"function"==typeof t&&(t=t(this.i18n,e)),t instanceof Array||(t=[t]),t}}},9469:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MissingTranslation=t.errorStrategy=t.messageStrategy=t.guessStrategy=void 0;const i=r(2202);t.guessStrategy=function(e,t){t instanceof Array&&(t=t.join(e.defaultSeparator));const r=t.split(e.defaultSeparator).slice(-1)[0];return e.missingTranslationPrefix+r.replace("_"," ").replace(/([a-z])([A-Z])/g,((e,t,r)=>`${t} ${r.toLowerCase()}`))};t.messageStrategy=(e,t,r)=>{const n=(0,i.getFullScope)(e,t,r),a="locale"in r?r.locale:e.locale,s=(0,i.inferType)(a);return`[missing "${["string"===s?a:s,n].join(e.defaultSeparator)}" translation]`};t.errorStrategy=(e,t,r)=>{const n=(0,i.getFullScope)(e,t,r),a=[e.locale,n].join(e.defaultSeparator);throw new Error(`Missing translation: ${a}`)};t.MissingTranslation=class{constructor(e){this.i18n=e,this.registry={},this.register("guess",t.guessStrategy),this.register("message",t.messageStrategy),this.register("error",t.errorStrategy)}register(e,t){this.registry[e]=t}get(e,t){var r;return this.registry[null!==(r=t.missingBehavior)&&void 0!==r?r:this.i18n.missingBehavior](this.i18n,e,t)}}},6530:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Pluralization=t.defaultPluralizer=t.useMakePlural=void 0;const i=r(9551);function n({pluralizer:e,includeZero:t=!0,ordinal:r=!1}){return function(i,n){return[t&&0===n?"zero":"",e(n,r)].filter(Boolean)}}t.useMakePlural=n,t.defaultPluralizer=n({pluralizer:i.en,includeZero:!0});t.Pluralization=class{constructor(e){this.i18n=e,this.registry={},this.register("default",t.defaultPluralizer)}register(e,t){this.registry[e]=t}get(e){return this.registry[e]||this.registry[this.i18n.locale]||this.registry.default}}},1472:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.camelCaseKeys=void 0;const i=r(7825);t.camelCaseKeys=function(e){return e?Object.keys(e).reduce(((t,r)=>(t[(0,i.camelCase)(r)]=e[r],t)),{}):{}}},251:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTranslationOptions=void 0;const i=r(7986);t.createTranslationOptions=function(e,t,r){let n=[{scope:t}];if((0,i.isSet)(r.defaults)&&(n=n.concat(r.defaults)),(0,i.isSet)(r.defaultValue)){const i="function"==typeof r.defaultValue?r.defaultValue(e,t,r):r.defaultValue;n.push({message:i}),delete r.defaultValue}return n}},4817:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.expandRoundMode=void 0;const n=i(r(2860));var a;!function(e){e[e.up=n.default.ROUND_UP]="up",e[e.down=n.default.ROUND_DOWN]="down",e[e.truncate=n.default.ROUND_DOWN]="truncate",e[e.halfUp=n.default.ROUND_HALF_UP]="halfUp",e[e.default=n.default.ROUND_HALF_UP]="default",e[e.halfDown=n.default.ROUND_HALF_DOWN]="halfDown",e[e.halfEven=n.default.ROUND_HALF_EVEN]="halfEven",e[e.banker=n.default.ROUND_HALF_EVEN]="banker",e[e.ceiling=n.default.ROUND_CEIL]="ceiling",e[e.ceil=n.default.ROUND_CEIL]="ceil",e[e.floor=n.default.ROUND_FLOOR]="floor"}(a||(a={})),t.expandRoundMode=function(e){var t;return null!==(t=a[e])&&void 0!==t?t:a.default}},494:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.formatNumber=void 0;const n=i(r(2860)),a=r(7825),s=r(283);t.formatNumber=function(e,t){var r,i,o;const l=new n.default(e);if(t.raise&&!l.isFinite())throw new Error(`"${e}" is not a valid numeric value`);const u=(0,s.roundNumber)(l,t),d=new n.default(u),c=d.lt(0),m=d.isZero();let[T,b]=u.split(".");const f=[];let g;const p=null!==(r=t.format)&&void 0!==r?r:"%n",h=null!==(i=t.negativeFormat)&&void 0!==i?i:`-${p}`,E=c&&!m?h:p;for(T=T.replace("-","");T.length>0;)f.unshift(T.substr(Math.max(0,T.length-3),3)),T=T.substr(0,T.length-3);return T=f.join(""),g=f.join(t.delimiter),b=t.significant?function({significand:e,whole:t,precision:r}){if("0"===t||null===r)return e;const i=Math.max(0,r-t.length);return(null!=e?e:"").substr(0,i)}({whole:T,significand:b,precision:t.precision}):null!=b?b:(0,a.repeat)("0",null!==(o=t.precision)&&void 0!==o?o:0),t.stripInsignificantZeros&&b&&(b=b.replace(/0+$/,"")),l.isNaN()&&(g=e.toString()),b&&l.isFinite()&&(g+=(t.separator||".")+b),function(e,{formattedNumber:t,unit:r}){return e.replace("%n",t).replace("%u",r)}(E,{formattedNumber:g,unit:t.unit})}},327:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFullScope=void 0,t.getFullScope=function(e,t,r){let i="";return(t instanceof String||"string"==typeof t)&&(i=t),t instanceof Array&&(i=t.join(e.defaultSeparator)),r.scope&&(i=[r.scope,i].join(e.defaultSeparator)),i}},2202:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.timeAgoInWords=t.strftime=t.roundNumber=t.pluralize=t.parseDate=t.numberToHumanSize=t.numberToHuman=t.numberToDelimited=t.lookup=t.isSet=t.interpolate=t.inferType=t.getFullScope=t.formatNumber=t.expandRoundMode=t.createTranslationOptions=t.camelCaseKeys=void 0;var i=r(1472);Object.defineProperty(t,"camelCaseKeys",{enumerable:!0,get:function(){return i.camelCaseKeys}});var n=r(251);Object.defineProperty(t,"createTranslationOptions",{enumerable:!0,get:function(){return n.createTranslationOptions}});var a=r(4817);Object.defineProperty(t,"expandRoundMode",{enumerable:!0,get:function(){return a.expandRoundMode}});var s=r(494);Object.defineProperty(t,"formatNumber",{enumerable:!0,get:function(){return s.formatNumber}});var o=r(327);Object.defineProperty(t,"getFullScope",{enumerable:!0,get:function(){return o.getFullScope}});var l=r(1590);Object.defineProperty(t,"inferType",{enumerable:!0,get:function(){return l.inferType}});var u=r(5433);Object.defineProperty(t,"interpolate",{enumerable:!0,get:function(){return u.interpolate}});var d=r(7986);Object.defineProperty(t,"isSet",{enumerable:!0,get:function(){return d.isSet}});var c=r(3562);Object.defineProperty(t,"lookup",{enumerable:!0,get:function(){return c.lookup}});var m=r(1141);Object.defineProperty(t,"numberToDelimited",{enumerable:!0,get:function(){return m.numberToDelimited}});var T=r(3119);Object.defineProperty(t,"numberToHuman",{enumerable:!0,get:function(){return T.numberToHuman}});var b=r(5726);Object.defineProperty(t,"numberToHumanSize",{enumerable:!0,get:function(){return b.numberToHumanSize}});var f=r(993);Object.defineProperty(t,"parseDate",{enumerable:!0,get:function(){return f.parseDate}});var g=r(4214);Object.defineProperty(t,"pluralize",{enumerable:!0,get:function(){return g.pluralize}});var p=r(283);Object.defineProperty(t,"roundNumber",{enumerable:!0,get:function(){return p.roundNumber}});var h=r(5250);Object.defineProperty(t,"strftime",{enumerable:!0,get:function(){return h.strftime}});var E=r(6186);Object.defineProperty(t,"timeAgoInWords",{enumerable:!0,get:function(){return E.timeAgoInWords}})},1590:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.inferType=void 0,t.inferType=function(e){var t,r;if(null===e)return"null";const i=typeof e;return"object"!==i?i:(null===(r=null===(t=null==e?void 0:e.constructor)||void 0===t?void 0:t.name)||void 0===r?void 0:r.toLowerCase())||"object"}},5433:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.interpolate=void 0;const i=r(7986);t.interpolate=function(e,t,r){r=Object.keys(r).reduce(((t,i)=>(t[e.transformKey(i)]=r[i],t)),{});const n=t.match(e.placeholder);if(!n)return t;for(;n.length;){let a;const s=n.shift(),o=s.replace(e.placeholder,"$1");a=(0,i.isSet)(r[o])?r[o].toString().replace(/\$/gm,"_#$#_"):o in r?e.nullPlaceholder(e,s,t,r):e.missingPlaceholder(e,s,t,r);const l=new RegExp(s.replace(/\{/gm,"\\{").replace(/\}/gm,"\\}"));t=t.replace(l,a)}return t.replace(/_#\$#_/g,"$")}},7986:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isSet=void 0,t.isSet=function(e){return null!=e}},3562:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.lookup=void 0;const i=r(7986),n=r(327),a=r(1590);t.lookup=function(e,t,r={}){const s="locale"in(r=Object.assign({},r))?r.locale:e.locale,o=(0,a.inferType)(s),l=e.locales.get("string"===o?s:typeof s).slice(),u=(0,n.getFullScope)(e,t,r).split(e.defaultSeparator).map((t=>e.transformKey(t))),d=l.map((t=>u.reduce(((e,t)=>e&&e[t]),e.translations[t])));return d.push(r.defaultValue),d.find((e=>(0,i.isSet)(e)))}},1141:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numberToDelimited=void 0;const n=i(r(2860));t.numberToDelimited=function(e,t){const r=new n.default(e);if(!r.isFinite())return e.toString();if(!t.delimiterPattern.global)throw new Error(`options.delimiterPattern must be a global regular expression; received ${t.delimiterPattern}`);let[i,a]=r.toString().split(".");return i=i.replace(t.delimiterPattern,(e=>`${e}${t.delimiter}`)),[i,a].filter(Boolean).join(t.separator)}},3119:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numberToHuman=void 0;const n=i(r(2860)),a=r(7825),s=r(327),o=r(3562),l=r(283),u=r(1590),d={0:"unit",1:"ten",2:"hundred",3:"thousand",6:"million",9:"billion",12:"trillion",15:"quadrillion","-1":"deci","-2":"centi","-3":"mili","-6":"micro","-9":"nano","-12":"pico","-15":"femto"},c=(0,a.zipObject)(Object.values(d),Object.keys(d).map((e=>parseInt(e,10))));t.numberToHuman=function(e,t,r){const i={roundMode:r.roundMode,precision:r.precision,significant:r.significant};let m;if("string"===(0,u.inferType)(r.units)){const t=r.units;if(m=(0,o.lookup)(e,t),!m)throw new Error(`The scope "${e.locale}${e.defaultSeparator}${(0,s.getFullScope)(e,t,{})}" couldn't be found`)}else m=r.units;let T=(0,l.roundNumber)(new n.default(t),i);const b=((e,t)=>{const r=e.isZero()?0:Math.floor(Math.log10(e.abs().toNumber()));return(e=>(0,a.sortBy)(Object.keys(e).map((e=>c[e])),(e=>-1*e)))(t).find((e=>r>=e))||0})(new n.default(T),m),f=((e,t)=>e[d[t.toString()]]||"")(m,b);if(T=(0,l.roundNumber)(new n.default(T).div(Math.pow(10,b)),i),r.stripInsignificantZeros){let[e,t]=T.split(".");t=(t||"").replace(/0+$/,""),T=e,t&&(T+=`${r.separator}${t}`)}return r.format.replace("%n",T||"0").replace("%u",f).trim()}},5726:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numberToHumanSize=void 0;const n=i(r(2860)),a=r(283),s=r(4817),o=["byte","kb","mb","gb","tb","pb","eb"];t.numberToHumanSize=function(e,t,r){const i=(0,s.expandRoundMode)(r.roundMode),l=1024,u=new n.default(t).abs(),d=u.lt(l);let c;const m=((e,t)=>{const r=t.length-1,i=new n.default(Math.log(e.toNumber())).div(Math.log(l)).integerValue(n.default.ROUND_DOWN).toNumber();return Math.min(r,i)})(u,o);c=d?u.integerValue():new n.default((0,a.roundNumber)(u.div(Math.pow(l,m)),{significant:r.significant,precision:r.precision,roundMode:r.roundMode}));const T=e.translate("number.human.storage_units.format",{defaultValue:"%n %u"}),b=e.translate((f=o,`number.human.storage_units.units.${d?"byte":f[m]}`),{count:u.integerValue().toNumber()});var f;let g=c.toFixed(r.precision,i);return r.stripInsignificantZeros&&(g=g.replace(/(\..*?)0+$/,"$1").replace(/\.$/,"")),T.replace("%n",g).replace("%u",b)}},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseDate=void 0,t.parseDate=function(e){if(e instanceof Date)return e;if("number"==typeof e){const t=new Date;return t.setTime(e),t}const t=e.match(/(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:[.,](\d{1,3}))?)?(Z|\+00:?00)?/);if(t){const e=t.slice(1,8).map((e=>parseInt(e,10)||0));e[1]-=1;const[r,i,n,a,s,o,l]=e;return t[8]?new Date(Date.UTC(r,i,n,a,s,o,l)):new Date(r,i,n,a,s,o,l)}if(e.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\d+) (\d+:\d+:\d+) ([+-]\d+) (\d+)/)){const e=new Date;return e.setTime(Date.parse([RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$6,RegExp.$4,RegExp.$5].join(" "))),e}const r=new Date;return r.setTime(Date.parse(e)),r}},4214:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.pluralize=void 0;const i=r(7986),n=r(3562);t.pluralize=function({i18n:e,count:t,scope:r,options:a,baseScope:s}){let o,l;if(a=Object.assign({},a),o="object"==typeof r&&r?r:(0,n.lookup)(e,r,a),!o)return e.missingTranslation.get(r,a);const u=e.pluralization.get(a.locale)(e,t),d=[];for(;u.length;){const e=u.shift();if((0,i.isSet)(o[e])){l=o[e];break}d.push(e)}return(0,i.isSet)(l)?(a.count=t,e.interpolate(e,l,a)):e.missingTranslation.get(s.split(e.defaultSeparator).concat([d[0]]),a)}},283:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.roundNumber=void 0;const n=i(r(2860)),a=r(4817);function s(e,{precision:t,significant:r}){return r&&null!==t&&t>0?t-function(e){return e.isZero()?1:Math.floor(Math.log10(e.abs().toNumber())+1)}(e):t}t.roundNumber=function(e,t){const r=s(e,t);if(null===r)return e.toString();const i=(0,a.expandRoundMode)(t.roundMode);if(r>=0)return e.toFixed(r,i);const o=Math.pow(10,Math.abs(r));return(e=new n.default(e.div(o).toFixed(0,i)).times(o)).toString()}},5250:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.strftime=void 0;const r={meridian:{am:"AM",pm:"PM"},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbrDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],monthNames:[null,"January","February","March","April","May","June","July","August","September","October","November","December"],abbrMonthNames:[null,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]};t.strftime=function(e,t,i={}){const{abbrDayNames:n,dayNames:a,abbrMonthNames:s,monthNames:o,meridian:l}=Object.assign(Object.assign({},r),i);if(isNaN(e.getTime()))throw new Error("strftime() requires a valid date object, but received an invalid date.");const u=e.getDay(),d=e.getDate(),c=e.getFullYear(),m=e.getMonth()+1,T=e.getHours();let b=T;const f=T>11?"pm":"am",g=e.getSeconds(),p=e.getMinutes(),h=e.getTimezoneOffset(),E=Math.floor(Math.abs(h/60)),S=Math.abs(h)-60*E,_=(h>0?"-":"+")+(E.toString().length<2?"0"+E:E)+(S.toString().length<2?"0"+S:S);return b>12?b-=12:0===b&&(b=12),t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%a",n[u])).replace("%A",a[u])).replace("%b",s[m])).replace("%B",o[m])).replace("%d",d.toString().padStart(2,"0"))).replace("%e",d.toString())).replace("%-d",d.toString())).replace("%H",T.toString().padStart(2,"0"))).replace("%-H",T.toString())).replace("%k",T.toString())).replace("%I",b.toString().padStart(2,"0"))).replace("%-I",b.toString())).replace("%l",b.toString())).replace("%m",m.toString().padStart(2,"0"))).replace("%-m",m.toString())).replace("%M",p.toString().padStart(2,"0"))).replace("%-M",p.toString())).replace("%p",l[f])).replace("%P",l[f].toLowerCase())).replace("%S",g.toString().padStart(2,"0"))).replace("%-S",g.toString())).replace("%w",u.toString())).replace("%y",c.toString().padStart(2,"0").substr(-2))).replace("%-y",c.toString().padStart(2,"0").substr(-2).replace(/^0+/,""))).replace("%Y",c.toString())).replace(/%z/i,_)}},6186:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.timeAgoInWords=void 0;const i=r(7825),n=r(993),a=(e,t,r)=>r>=e&&r<=t;t.timeAgoInWords=function(e,t,r,s={}){const o=s.scope||"datetime.distance_in_words",l=(t,r=0)=>e.t(t,{count:r,scope:o});t=(0,n.parseDate)(t),r=(0,n.parseDate)(r);let u=t.getTime()/1e3,d=r.getTime()/1e3;u>d&&([t,r,u,d]=[r,t,d,u]);const c=Math.round(d-u),m=Math.round((d-u)/60),T=m/60/24,b=Math.round(m/60),f=Math.round(T),g=Math.round(f/30);if(a(0,1,m))return s.includeSeconds?a(0,4,c)?l("less_than_x_seconds",5):a(5,9,c)?l("less_than_x_seconds",10):a(10,19,c)?l("less_than_x_seconds",20):a(20,39,c)?l("half_a_minute"):a(40,59,c)?l("less_than_x_minutes",1):l("x_minutes",1):0===m?l("less_than_x_minutes",1):l("x_minutes",m);if(a(2,44,m))return l("x_minutes",m);if(a(45,89,m))return l("about_x_hours",1);if(a(90,1439,m))return l("about_x_hours",b);if(a(1440,2519,m))return l("x_days",1);if(a(2520,43199,m))return l("x_days",f);if(a(43200,86399,m))return l("about_x_months",Math.round(m/43200));if(a(86400,525599,m))return l("x_months",g);let p=t.getFullYear();t.getMonth()+1>=3&&(p+=1);let h=r.getFullYear();r.getMonth()+1<3&&(h-=1);const E=525600,S=m-1440*(p>h?0:(0,i.range)(p,h).filter((e=>1===new Date(e,1,29).getMonth())).length),_=Math.trunc(S/E),N=parseFloat((S/E-_).toPrecision(3));return N<.25?l("about_x_years",_):N<.75?l("over_x_years",_):l("almost_x_years",_+1)}},7380:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.MissingTranslation=t.Locales=t.I18n=void 0;var a=r(1574);Object.defineProperty(t,"I18n",{enumerable:!0,get:function(){return a.I18n}});var s=r(4567);Object.defineProperty(t,"Locales",{enumerable:!0,get:function(){return s.Locales}});var o=r(9469);Object.defineProperty(t,"MissingTranslation",{enumerable:!0,get:function(){return o.MissingTranslation}}),n(r(8921),t)},8921:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},8173:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(r(7252)),a=i(r(8611)),s=r(4437),o=i(r(5086)),l=i(r(2015)),u=i(r(4468)),d=i(r(6411)),c=i(r(6190)),m=i(r(9168)),T=i(r(7397)),b=i(r(612)),f=(0,n.default)();f.set("trust proxy",!0);const g=a.default.createServer(f),p=new s.Server(g,{wsEngine:o.default.Server});p.use(d.default),p.use(c.default),p.use(m.default),p.use(T.default),f.get("/",((e,t)=>{t.send(u.default.renderToString(l.default.createElement("html",null,l.default.createElement("head",null,l.default.createElement("title",null,"QuickBox Websocket")),l.default.createElement("body",null,l.default.createElement("pre",null,"Request from ",e.ip)))))})),f.get("/set",((e,t)=>{const r=e.query.lang;b.default.locale="string"==typeof r?r:"en",t.send(b.default.locale)})),g.listen(8575,"127.0.0.1",(()=>{console.log("Quickbox-ws running...")}))},292:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.formatSpeed=t.formatSize=t.processExists=void 0;const a=n(r(333));t.processExists=function(e,t){return i(this,void 0,void 0,(function*(){return-1!==(yield a.default.processes()).list.findIndex((r=>r.name===e&&r.user===t))}))},t.formatSize=function(e){const t=isNaN(e)?0:e,r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],i=Math.min(Math.max(Math.floor(Math.log2(t)/10),0),r.length-1);return(t/Math.pow(2,10*i)).toFixed(i>0?2:0).toString()+" "+r[i]},t.formatSpeed=function(e,t=3,r=0){if(e<1e-5)return"0 bps";const i=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,i)).toFixed(t)+" "+["bps","Kbps","Mbps","Gbps","Tbps","Pbps","Ebps","Zbps","Ybps"][i+r]}},7892:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getIfaceConfig=t.getVnstatData=void 0;const a=n(r(9896)),s=r(5317),o=r(7825);t.getVnstatData=function(e){return i(this,void 0,void 0,(function*(){var t,r,i,n,l,u,d;const c={hour:[],day:[],month:[],top:[],summary:{totalrx:0,totaltx:0,interface:"",created:0}},m="/usr/bin/vnstat";let T={vnstatversion:"",jsonversion:"",interfaces:[]};if(a.default.existsSync(m))T=JSON.parse(yield(b=`${m} --json -i ${e}`,new Promise(((e,t)=>{(0,s.exec)(b,((r,i,n)=>{r&&t(r),e(i||n)}))}))));else{const t=`./dumps/vnstat_dump_${e}`;if(a.default.existsSync(t)){const e=a.default.readFileSync(t,"utf8");T=JSON.parse(e)}}var b;const f=T.jsonversion,g="1"===f?1024:1;let p=T.interfaces.findIndex((t=>t.name===e));-1===p&&(p=0);const h=T.interfaces[p],E=h.traffic,S="1"===f?E.hours:E.hour,_=h.updated.date,N=null!==(t=null==S?void 0:S.filter((e=>e.date.year===_.year&&e.date.month===_.month&&e.date.day===_.day)))&&void 0!==t?t:[];for(let e=0;e{var t,r;return 1e4*e.date.year+100*(null!==(t=e.date.month)&&void 0!==t?t:0)+(null!==(r=e.date.day)&&void 0!==r?r:0)})),L=null!==(n=null==y?void 0:y.length)&&void 0!==n?n:0;for(let e=L-Math.min(30,L);e{Object.defineProperty(t,"__esModule",{value:!0}),t.WatchedConfig=void 0;const i=r(9896);t.WatchedConfig=class{constructor(e,t="utf-8"){this.path=e,this.encoding=t,this.timestamp=new Date,this.config={},this.loadConfig(),this.watch()}get Value(){return this.config}loadConfig(){this.config=JSON.parse((0,i.readFileSync)(this.path).toString(this.encoding))}watch(){(0,i.watchFile)(this.path,((e,t)=>{e.mtime>t.mtime&&(this.timestamp=e.mtime,this.loadConfig(),console.log(`Config reloaded at ${new Date}`))}))}}},8019:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bwTables=void 0;const a=n(r(2015)),s=n(r(4468)),o=n(r(612)),l=r(7892),u=r(292);function d(e,t){const r=e=>e%2==1?"odd":"even";return a.default.createElement("table",{className:"table table-hover table-default nomargin",width:"100%",cellSpacing:"0"},a.default.createElement("thead",null,a.default.createElement("tr",null,a.default.createElement("th",{className:"text-right",style:{width:"20%"}},e),a.default.createElement("th",{className:"text-right",style:{width:"15%"}},o.default.t("Out")),a.default.createElement("th",{className:"text-left",style:{width:"15%"}},o.default.t("In")),a.default.createElement("th",{className:"text-right",style:{width:"15%"}},o.default.t("Out_AVG")),a.default.createElement("th",{className:"text-left",style:{width:"15%"}},o.default.t("In_AVG")),a.default.createElement("th",{className:"text-left",style:{width:"18%"}},o.default.t("Total")))),a.default.createElement("tbody",null,t.map(((e,t)=>a.default.createElement("tr",{key:t},a.default.createElement("td",{className:`label_${r(t)}`,style:{fontSize:"12px",textAlign:"right"}},a.default.createElement("b",null,e.label)),a.default.createElement("td",{className:`numeric_${r(t)} text-success`,style:{fontSize:"12px",textAlign:"right"}},(0,u.formatSize)(e.tx)),a.default.createElement("td",{className:`numeric_${r(t)} text-primary`,style:{fontSize:"12px",textAlign:"left"}},(0,u.formatSize)(e.rx)),a.default.createElement("td",{className:`numeric_${r(t)} text-success`,style:{fontSize:"12px",textAlign:"right"}},(0,u.formatSpeed)(e.tx_avg)),a.default.createElement("td",{className:`numeric_${r(t)} text-primary`,style:{fontSize:"12px",textAlign:"left"}},(0,u.formatSpeed)(e.rx_avg)),a.default.createElement("td",{className:`numeric_${r(t)}`,style:{fontSize:"12px",textAlign:"left"}},(0,u.formatSize)(e.rx+e.tx)))))))}t.bwTables=function(e,t){return i(this,void 0,void 0,(function*(){const r=yield(0,l.getVnstatData)(e);return s.default.renderToString(a.default.createElement("div",{className:"col-sm-12",style:{paddingLeft:0,paddingRight:0}},a.default.createElement("div",{className:"table-responsive"},function(e){const t=e.summary.totalrx,r=e.summary.totaltx,i=Math.floor(Date.now()/1e3)-e.summary.created,n=8*Math.round(t/i),a=8*Math.round(r/i),s=[];return e.hour.length>0&&e.day.length>0&&e.month.length>0&&(s.push({time:NaN,label:o.default.t("This hour"),rx:e.hour[e.hour.length-1].rx,tx:e.hour[e.hour.length-1].tx,rx_avg:e.hour[e.hour.length-1].rx_avg,tx_avg:e.hour[e.hour.length-1].tx_avg}),s.push({time:NaN,label:o.default.t("This day"),rx:e.day[e.day.length-1].rx,tx:e.day[e.day.length-1].tx,rx_avg:e.day[e.day.length-1].rx_avg,tx_avg:e.day[e.day.length-1].tx_avg}),s.push({time:NaN,label:o.default.t("This month"),rx:e.month[e.month.length-1].rx,tx:e.month[e.month.length-1].tx,rx_avg:e.month[e.month.length-1].rx_avg,tx_avg:e.month[e.month.length-1].tx_avg}),s.push({time:NaN,label:o.default.t("All time"),rx:t,tx:r,rx_avg:n,tx_avg:a})),d(o.default.t("Summary"),s)}(r)),a.default.createElement("div",{className:"col-sm-12",style:{paddingLeft:0,paddingRight:0}},a.default.createElement("div",{className:"table-responsive"},void 0===t||"h"===t?d(o.default.t("Recent hours"),r.hour):"d"===t?d(o.default.t("Last 30 days"),r.day):"m"===t?d(o.default.t("Last 12 months"),r.month):"t"===t?d(o.default.t("Top 10 days"),r.top):null))))}))}},5146:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.diskData=void 0;const a=n(r(333)),s=n(r(2015)),o=n(r(4468)),l=r(9896),u=n(r(1943)),d=r(8680),c=n(r(612)),m=r(292);function T(e){return i(this,void 0,void 0,(function*(){try{return(yield u.default.readdir(e)).filter((e=>e.endsWith(".torrent"))).length}catch(e){return console.error("Failed to count torrent",e),0}}))}function b(e){return i(this,void 0,void 0,(function*(){try{return yield u.default.access(e,u.default.constants.F_OK),!0}catch(e){return!1}}))}function f(e){const t=(r=e.use)>=90?"progress-bar-danger":r>=70?"progress-bar-warning":"progress-bar-success";var r;const i=function(e){return e>=90?"disk-danger":e>=70?"disk-warning":"disk-good"}(e.use);return s.default.createElement("div",{key:e.mount},s.default.createElement("div",{className:"row"},s.default.createElement("div",{className:"col-sm-8"},s.default.createElement("h4",null,c.default.t("MOUNT_POINT")),s.default.createElement("p",{style:{color:"#eb4549",fontWeight:"normal",fontSize:"14px"}},e.mount),s.default.createElement("h4",null,c.default.t("DISK_SPACE")),s.default.createElement("p",{className:"nomargin",style:{fontSize:"14px"}},c.default.t("FREE"),": ",(0,m.formatSize)(e.available)," 丨 ",c.default.t("USED"),": ",(0,m.formatSize)(e.used)," 丨 ",c.default.t("SIZE"),": ",(0,m.formatSize)(e.size)),s.default.createElement("br",null),s.default.createElement("div",{className:"progress"},s.default.createElement("div",{style:{width:`${e.use}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":e.use,role:"progressbar",className:`progress-bar ${t}`},s.default.createElement("span",{className:"sr-only"},e.use,"% ",c.default.t("USED")))),s.default.createElement("p",{style:{fontSize:"10px"}},c.default.t("PERCENTAGE_TXT",{used:e.use}))),s.default.createElement("div",{className:"col-sm-4 text-right"},s.default.createElement("i",{className:`fa fa-hdd-o ${i}`,style:{fontSize:"90px"}}))),s.default.createElement("hr",null))}t.diskData=function(){return i(this,void 0,void 0,(function*(){const e=yield a.default.fsSize();return o.default.renderToString(s.default.createElement("div",null,e.filter((e=>e.size>1<<30&&!e.mount.startsWith("/var/lib/docker/overlay"))).map(f),yield function(){return i(this,void 0,void 0,(function*(){const e=(e,t)=>s.default.createElement("div",null,s.default.createElement("h4",null,c.default.t(e)),s.default.createElement("p",{className:"nomargin",dangerouslySetInnerHTML:{__html:c.default.t("TORRENTS_LOADED",{loaded:t})}})),t=[];if((yield(0,m.processExists)("rtorrent",d.username))&&(yield b("/install/.rtorrent.lock"))){const r=yield T(`/home/${d.username}/.sessions/`);t.push(e("RTORRENTS_TITLE",r))}if((yield(0,m.processExists)("deluge-web",d.username))&&(yield b("/install/.deluge.lock"))){const r=yield T(`/home/${d.username}/.config/deluge/state/`);t.push(e("DTORRENTS_TITLE",r))}if((yield(0,m.processExists)("transmission-daemon",d.username))&&(yield b("/install/.transmission.lock"))){const r=yield T(`/home/${d.username}/.config/transmission/torrents/`);t.push(e("TRTORRENTS_TITLE",r))}if((yield(0,m.processExists)("qbittorrent-nox",d.username))&&(yield b("/install/.qbittorrent.lock"))){const r=(0,l.existsSync)(`/home/${d.username}/.local/share/data/qBittorrent`)?`/home/${d.username}/.local/share/data/qBittorrent/BT_backup`:`/home/${d.username}/.local/share/qBittorrent/BT_backup`,i=yield T(r);t.push(e("QTORRENTS_TITLE",i))}return s.default.createElement("div",null,t)}))}()))}))}},9378:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.widgetsLoad=void 0;const a=n(r(857)),s=n(r(333));t.widgetsLoad=()=>i(void 0,void 0,void 0,(function*(){const e=a.default.loadavg(),t=yield s.default.processes();return`${e.map((e=>e.toFixed(2))).join(" ")} ${t.all}`}))},7020:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.netStatus=void 0;const a=n(r(333));t.netStatus=()=>i(void 0,void 0,void 0,(function*(){const e=yield function(){return i(this,void 0,void 0,(function*(){const e=yield a.default.networkInterfaces();return Array.isArray(e)?e.filter((e=>"up"===e.operstate)).map((e=>e.iface)):[e.iface]}))}(),t={};for(const r of e){const e=yield a.default.networkStats(r);e.length>0&&(t[r]={rx_bytes:e[0].rx_bytes,tx_bytes:e[0].tx_bytes})}return{net:t,ts:Date.now()/1e3}}))},6272:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ramStats=void 0;const a=n(r(333)),s=n(r(2015)),o=n(r(4468)),l=r(7825),u=n(r(612)),d=r(292);function c(e){return(e=(0,l.toNumber)(e))>=90?"progress-bar-danger":e>=70?"progress-bar-warning":"progress-bar-success"}t.ramStats=function(){return i(this,void 0,void 0,(function*(){const e=yield a.default.mem(),t=[],r=(0,d.formatSize)(e.used),i=(0,d.formatSize)(e.free),n=(0,d.formatSize)(e.total),m=(0,l.toNumber)((e.used/e.total*100).toFixed(2)),T=e.used-e.cached-e.buffers,b=(0,d.formatSize)(T),f=(0,d.formatSize)(e.total-T),g=(0,l.toNumber)((T/e.total*100).toFixed(2)),p=(0,d.formatSize)(e.buffers),h=(0,d.formatSize)(e.cached),E=(0,l.toNumber)((e.cached/e.total*100).toFixed(2)),S=(0,d.formatSize)(e.swapused),_=(0,d.formatSize)(e.swapfree),N=(0,d.formatSize)(e.swaptotal),y=(0,l.toNumber)((e.swapused/e.swaptotal*100).toFixed(2));let L=c(m);return t.push(s.default.createElement("div",{key:"phsysical",className:"col-sm-12"},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("PHYSICAL_MEMORY_TITLE"),": ",m,"%",s.default.createElement("div",null),u.default.t("PHYSICAL_MEMORY_USED_TXT"),": ",s.default.createElement("div",{style:{color:"#eb4549",display:"contents"}},r)," | ",u.default.t("PHYSICAL_MEMORY_IDLE_TXT"),": ",s.default.createElement("div",{style:{color:"#eb4549",display:"contents"}},i)),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${m}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":m,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},m,"% ",u.default.t("USED")))))),e.cached>1e-5&&(L=c(E),t.push(s.default.createElement("div",{key:"cached",className:"col-sm-12",style:{paddingTop:"10px"}},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("CACHED_MEMORY_TITLE"),": ",E,"%",s.default.createElement("div",null),u.default.t("CACHED_MEMORY_USAGE_TXT",{cached:h})," | ",u.default.t("CACHED_MEMORY_BUFFERS_TXT",{buffered:p})),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${E}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":E,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},E,"% ",u.default.t("USED")))))),L=c(g),t.push(s.default.createElement("div",{key:"real",className:"col-sm-12",style:{paddingTop:"10px"}},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("REAL_MEMORY_TITLE"),": ",g,"%",s.default.createElement("div",null),u.default.t("REAL_MEMORY_USAGE_TXT",{used:b})," | ",u.default.t("REAL_MEMORY_FREE_TXT",{free:f})),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${g}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":g,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},g,"% ",u.default.t("USED"))))))),e.swaptotal>1e-5&&(L=c(y),t.push(s.default.createElement("div",{key:"swap",className:"col-sm-12",style:{paddingTop:"10px"}},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("SWAP_TITLE"),": ",y,"%",s.default.createElement("div",null),u.default.t("SWAP_TOTAL_TXT"),": ",u.default.t("TOTAL_L",{total:N})," | ",u.default.t("SWAP_USED_TXT",{used:S})," | ",u.default.t("SWAP_IDLE_TXT",{free:_})),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${y}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":y,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},y,"% ",u.default.t("USED"))))))),o.default.renderToString(s.default.createElement("div",null,s.default.createElement("div",{className:"row"},t),s.default.createElement("hr",null),s.default.createElement("h3",null,u.default.t("TOTAL_RAM")),s.default.createElement("h4",{className:"nomargin",dangerouslySetInnerHTML:{__html:`${n}\n `}})))}))}},4589:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.upTime=void 0;const n=i(r(333)),a=i(r(2015)),s=i(r(4468)),o=i(r(612));t.upTime=()=>{const e=n.default.time().uptime,t=Math.floor(e/60/60/24),r=Math.floor(e/60/60%24),i=Math.floor(e/60%60);return s.default.renderToString(a.default.createElement("span",{style:{fontSize:"14px"}},a.default.createElement("b",null,t),a.default.createElement("small",null,o.default.t("DAYS_L")),a.default.createElement("b",null,r),a.default.createElement("small",null,o.default.t("HOURS_L")),a.default.createElement("b",null,i),a.default.createElement("small",null,o.default.t("MINUTES_L"))))}},8938:e=>{e.exports=require("axios")},2860:e=>{e.exports=require("bignumber.js")},7252:e=>{e.exports=require("express")},7825:e=>{e.exports=require("lodash")},9551:e=>{e.exports=require("make-plural")},2015:e=>{e.exports=require("react")},4468:e=>{e.exports=require("react-dom/server")},4437:e=>{e.exports=require("socket.io")},333:e=>{e.exports=require("systeminformation")},5086:e=>{e.exports=require("ws")},5317:e=>{e.exports=require("child_process")},9896:e=>{e.exports=require("fs")},1943:e=>{e.exports=require("fs/promises")},8611:e=>{e.exports=require("http")},5692:e=>{e.exports=require("https")},857:e=>{e.exports=require("os")},6928:e=>{e.exports=require("path")},1699:e=>{e.exports=JSON.parse('{"AGREE":"Jeg er med, gør det!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi er et plugin til irssi, der overvåger IRC annoncerer kanaler og downloader torrent-filer baseret på brugerdefinerede filtre.","AVAILABILITY":"Tilgængelighed","All time":"Samlet","BANDWIDTH_DATA":"Båndbredde","BOX":"Kun BOX","BOX_TOOLTIP_ART":"Adgang til denne feature fås via ssh ved at skrive: box install art","BOX_TOOLTIP_DENYHOSTS":"Adgang til denne feature fås via ssh ved at skrive: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Adgang til denne feature fås via ssh ved at skrive: box install fail2ban","BOX_TOOLTIP_H5AI":"Adgang til denne feature fås via ssh ved at skrive: box install h5ai","BOX_TOOLTIP_LECERT":"Adgang til denne feature fås via ssh ved at skrive: box install lecert","BOX_TOOLTIP_ZNC":"Adgang til denne feature fås via ssh ved at skrive: box install znc","BTSYNC":"BitTorrent Sync by BitTorrent, Inc er et proprietært peer-to-peer-fil synkronisering værktøj.","BW_SELECT":"Båndbredde mulighed","CACHED_MEMORY_BUFFERS_TXT":"Buffers ligger på {{buffered}}","CACHED_MEMORY_TITLE":"Cached Hukommelsesforbrug","CACHED_MEMORY_USAGE_TXT":"Cache hukommelsesforbrug ligger på {{cached}}","CANCEL":"Fortryd","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Skriv denne kommando i ssh for at ændre en brugers agdgangskode.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Skriv denne kommando i ssh (root) for at nulstille systemets fysiske Hukommelsescache.","CLEAR_CACHE":"Ryd Hukommelsescache","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Luk & Genopfrisk","COMPARE_COMMITS":"compare your current status to the latest commits.","CPU_STATUS":"CPU Status","CURRENT_COMMIT":"View your current commit status","CURRENT_VERSIONS_CHANGELOG":"View your current versions changelog.","DAYS_L":"dage","DELUGE":"Deluge en gratis letvægts cross-platform BitTorrent klient.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Detaljer","DEV_REPO_TXT":"Du er på QuickBox {{branch}} Repo","DISABLED":"Deaktiveret","DISKTEST_TXT":"Skriv denne kommando for at udføre en hurtig s/l test af din disk.","DISK_SPACE":"Disk Plads","DOWNLOAD":"Download","DOWNLOADS":"Downloads","DTORRENTS_TITLE":"Torrents i Deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Aktiveret","ENABLE_DISABLE_SERVICES":"Aktiver/Deaktiver","ESSENTIAL_USER_COMMANDS":"Vigtige Brugerkommandoer","FAIL2BAN":"Fail2Ban er et framework til indtrængningsforebyggelse af software som beskytter servere imod brute force angreb.","FILEBROWSER":"Filbrowser giver en filhåndteringsgrænseflade indenfor en bestemt mappe, og den kan bruges til at uploade, slette, forhåndsvise, omdøbe og redigere dine filer. Det tillader oprettelse af flere brugere, og hver bruger kan have sin egen mappe. Det kan bruges som en selvstændig app eller som middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet er et multifunktionsautomatiseringsværktøj til alle dine medier. Understøtter torrents, nzbs, podcasts, tegneserier, tv, film, RSS, HTML, CSV og meget mere.","FLOOD":"Flood er en anden webgrænseflade til rtorrent. Det implementerer en Node.js-server til kommunikation med rTorrent API, lagring af historiske data og visning af web-brugergrænsefladen.","FREE":"Ledig","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Hjælpekommandoer & Mere","HOURS_L":"tim","INSTALL":"Install","INSTALLED":"Installeret","INSTALLING":"Installerer","ISSUE_REPORT_TXT":"Rapporter et problem","In":"Ind","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Vælg sprog","LATEST_COMMIT":"latest.","LECERT":"Let\'s Encrypt er en gratis, automatiseret og åben certifikatmyndighed (CA). Det er en tjeneste fra Internet Security Research Group (ISRG).","Last 12 months":"Seneste 12 måneder","Last 30 days":"Seneste 30 dage","MAIN_MENU":"Hovedmenu","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Navn","NETDATA":"Netdata er et distribueret, realtids - ydeevne og sundheds overvågning for systemer og applikationer.","NETWORK":"Netværk","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC er både et VNC klient JavaScript bibliotek samt et program bygget oven på biblioteket. noVNC kører godt i enhver moderne browser, herunder mobilbrowsere (iOS og Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Ud","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Pakkeadministration","PANEL_CONFIG":"Panelkonfiguration","PANEL_RESET":"Nulstil panel","PERCENTAGE_TXT":"Du har brugt {{used}}% af din totale disk plads","PHYSICAL_MEMORY_IDLE_TXT":"ledig","PHYSICAL_MEMORY_TITLE":"Fysisk Hukommelsesforbrug","PHYSICAL_MEMORY_USED_TXT":"brugt","PLEX":"Plex lader dig streame dit indhold til enhver Plex enhed.","PLUGINS":"Plugins","PLUGIN_MENU":"Pluginmenu","PMC_NOTICE_TXT":"Bemærk! Disse muligheder er ikke det samme som aktivering og deaktivering af en softwarepakke. Disse muligheder er designet til enten at installere eller afinstallere.","PMENU_NOTICE_TXT":"Nemt at installere og afinstallere ruTorrent plugins blot ved at klikke på pluginnavnet","QBITTORRENT":"qBittorrent er en gratis og pålidelig P2P BitTorrent klient. En avanceret multiplatform BitTorrent-klient med en flot Qt-brugergrænseflade samt et web-interface til remote betjening og en integreret søgemaskine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"You are on the QuickBox commit - ","QUICK_SYSTEM_TIPS":"Hurtige System Tips","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Aktuel hukommelse ledig {{free}}","REAL_MEMORY_TITLE":"Aktuel Hukommelsesforbrug","REAL_MEMORY_USAGE_TXT":"Aktuel hukommelsesforbrug ligger på {{used}}","RECENT_UPDATES":"Seneste Aktivitet & Opdateringer","REFRESH":"Genopfrisk","RESTART_SERVICES":"Genstart Services","RPLUGIN_MENU":"ruTorrent Pluginmenu","RTORRENT":"rTorrent er en hurtig og effektiv BitTorrent-klient, der bruger og er ved at blive udviklet sammen med libTorrent-biblioteket (ikke forveksles med libtorrent-rasterbar). Det er skrevet i C ++ og bruger ncurses programmeringsbiblioteket, hvilket betyder at det bruger en tekstbrugergrænseflade.","RTORRENTS_TITLE":"Torrents i rTorrent","RUTORRENT":"ruTorrent er en front-end til den populære Bittorrent klient rtorrent. Hovedfunktioner: Letvægts serverside, så den kan installeres på gamle og low-end servere og selv på nogle SOHO routere, Udvidelser - der er flere plugins, og alle kan lave deres eget, kommer med club-QuickBox tema.","Recent hours":"Seneste timer","SCREEN_RTORRNENT_TXT":"tillader en bruger at genstarte/genforbinde rtorrent via SSH","SECONDS_L":"sek","SEEDBOX_COMMANDS":"Seedbox Kommandoer","SERVER_LOAD":"Serverbelastning","SERVICE_CONTROL_CENTER":"Servicekontrol","SERVICE_STATUS":"Service Status","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Størrelse","SL_TXT":"Din servers aktuelle belastningsgennemsnit","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"ledig {{free}}","SWAP_TITLE":"Swap Forbrug","SWAP_TOTAL_TXT":"SWAP Område","SWAP_USED_TXT":"brugt {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Open Source kontinuerlig Filsynkronisering med BitTorrent","SYSTEM_RAM_STATUS":"RAM Status","SYSTEM_RESPONSE_TITLE":"System Respons","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Oversigt","THEME_CHANGE_TXT":"You are about to change themes. If the theme doesn\'t appear correctly for you after the refresh, you probably need to clear your browser cache and retry.","THEME_SELECT":"Select Theme","TORRENTS_LOADED":"Der er indlæst {{loaded}} torrents","TOTAL_L":"total {{total}}","TOTAL_RAM":"Total System RAM","TRANSMISSION":"Transmission is designed for easy, powerful use. The defaults are set to Just Work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Denne dag","This hour":"Denne time","This month":"Denne måned","Top 10 days":"Top 10 dage","Total":"Total","UNINSTALLED":"Uinstalleret","UNINSTALLING":"Afinstallerer","UNINSTALLING_TITLE":"Afinstallerer","UNINSTALLING_TXT_1":"Vent venligst et øjeblik","UNINSTALLING_TXT_2":"bliver afinstalleret fra dit system.","UNINSTALL_AUTODL_TXT":"Du er ved at afinstallere AutoDL-iRSSi fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere AutoDL-iRSSi til hver en tid, men din sti til lagering og linkede mappeindstillinger vil blive nulstillet til standard.","UNINSTALL_BTSYNC_TXT":"Du er ved at afinstallere BitTorrent Sync fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere BitTorrent Sync til hver en tid, men din sti til lagering og linkede mappeindstillinger vil blive nulstillet til standard.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Du er ved at afinstallere Deluge fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Deluge til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_EMBY_TXT":"Du er ved at afinstallere Emby Media Server fra dit system.

Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Emby til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_FILEBROWSEREE_TXT":"Du er ved at afinstallere File Browser fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere File Browser Enhanced til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_FILEBROWSER_TXT":"Du er ved at afinstallere File Browser fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere File Browser til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_FLEXGET_TXT":"Du er ved at afinstallere FlexGet fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere FlexGet til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_FLOOD_TXT":"Du er ved at afinstallere Flood fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Flood til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_JELLYFIN_TXT":"Du er ved at afinstallere Jellyfin Media Server fra dit system.

Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Jellyfin til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_NETDATA_TXT":"Du er ved at afinstallere Netdata fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Netdata til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Du er ved at afinstallere noVNC fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere noVNC til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Du er ved at afinstallere Plex Media Server fra dit system.

Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Plex til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_QBITTORRENT_TXT":"Du er ved at afinstallere qBittorrent fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere qBittorrent til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Du er ved at afinstallere Rclone fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Rclone til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_RTORRENT_TXT":"Du er ved at afinstallere rTorrent fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere rTorrent til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_RUTORRENT_TXT":"Du er ved at afinstallere ruTorrent fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere ruTorrent til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_SABNZBD_TXT":"Du er ved at afinstallere SABnzbd fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere SABnzbd til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Du er ved at afinstallere Syncthing fra dit system.

Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Syncthing til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_WEBDAV_TXT":"Du er ved at afinstallere WebDAV fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere WebDAV til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_TITLE":"Afinstaller","UNINSTALL_TRANSMISSION_TXT":"Du er ved at afinstallere Transmission fra dit system.

Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Transmission til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_X2GO_TXT":"Du er ved at afinstallere x2go fra dit system.

Dette vil fuldstændig fjerne x2goserver og xfce4 desktopmiljøet fra dit system.","UNINSTALL_ZNC_TXT":"Du er ved at afinstallere ZNC fra dit system.

Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere ZNC til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UPDATE":"Opdater","UPLOAD":"Upload","UPTIME":"Oppetid","USED":"Brugt","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Båndbreddedetaljer","WEB_CONSOLE":"Webkonsol","WEBDAV":"WebDAV er en engelsk forkortelse for \\"Web-based Distributed Authoring and Versioning\\". Det er en udvidelse af http-protokollen og giver web-redaktører mulighed for at samarbejde om det at forfatte, redigere og udgive et web-sted på et fjernt beliggende it-system med anvendelse af versionskontrol.","YOUR_DISK_STATUS":"Disk Status","ZNC":"ZNC er en IRC bouncer eller BNC. Den kan frigøre ircklienten fra serveren eller kanalen og holde din klient ajour når der igen sker en tilkobling."}')},8127:e=>{e.exports=JSON.parse('{"AGREE":"Ich verstehe, zieh durch!","APP_INSTALL_TXT":"Führe diesen Befehl via SSH aus, um eine Software-Paketes zu installieren.","APP_UNINSTALL_TXT":"Führe diesen Befehl via SSH aus, um eine Software-Paketes zu löschen.","APP_UPGRADE_TXT":"Führe diesen Befehl via SSH aus, um eine Software-Paketes zu aktualisieren.","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi ist ein Plugin für irssi, das IRC-Ankündigungskanäle überwacht und Torrent-Dateien auf Basis benutzerdefinierter Filter herunterlädt.","AVAILABILITY":"Verfügbarkeit","All time":"Insgesamte Zeit","BANDWIDTH_DATA":"Bandbreite","BOX":"Nur BOX","BOX_TOOLTIP_ART":"Greife per SSH auf das Feature mit dem Befehl \\"box install art\\" zu","BOX_TOOLTIP_DENYHOSTS":"Greife per SSH auf das Feature mit dem Befehl \\"box install denyhosts\\" zu","BOX_TOOLTIP_FAIL2BAN":"Greife per SSH auf das Feature mit dem Befehl \\"box install fail2ban\\" zu","BOX_TOOLTIP_H5AI":"Greife per SSH auf das Feature mit dem Befehl \\"box install h5ai\\" zu","BOX_TOOLTIP_LECERT":"Greife per SSH auf das Feature mit dem Befehl \\"box install lecert\\" zu","BOX_TOOLTIP_ZNC":"Greife per SSH auf das Feature mit dem Befehl \\"box install znc\\" zu","BTSYNC":"BitTorrent Sync von BitTorrent, Inc ist ein proprietäres Peer-to-Peer Dateisynchronisationsprogramm.","BW_SELECT":"Bandbreitenoption","CACHED_MEMORY_BUFFERS_TXT":"Zwischenspeicher liegen bei {{buffered}}","CACHED_MEMORY_TITLE":"Gecachte Speichernutzung","CACHED_MEMORY_USAGE_TXT":"Cache Speichernutzung liegt bei {{cached}}","CANCEL":"Abbrechen","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Führe diesen Befehl via SSH aus, um das Passwort eines Benutzers zu ändern.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Führe diesen Befehl via SSH aus, um die Logs zu löschen.","CLEAN_MEM_TXT":"Führe den oben genannten Befehl als root aus, wenn du den physikalischen Cache-Speicher deines Systems löschen möchtest.","CLEAR_CACHE":"Lösche den Cache-Speicher","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Schließen & Aktualisieren","COMPARE_COMMITS":"compare your current status to the latest commits.","CPU_STATUS":"Status der CPU","CURRENT_COMMIT":"View your current commit status","CURRENT_VERSIONS_CHANGELOG":"View your current versions changelog.","DAYS_L":"Tage","DELUGE":"Deluge ist ein leichter, kostenloser, Cross-Plattform BitTorrent-Client.","DENYHOSTS":"DenyHosts ist ein in Python geschriebenes, log-basiertes Intrusion Prevention System für SSH-Server.","DETAILS":"Details","DEV_REPO_TXT":"Du bist im QuickBox {{branch}} Repo","DISABLED":"Deaktiviert","DISKTEST_TXT":"Dieser Befehl führt einen schnellen Lese/Schreib-Test deiner Festplatte durch.","DISK_SPACE":"Speicherplatz","DOWNLOAD":"Download","DOWNLOADS":"Downloads","DTORRENTS_TITLE":"Torrents in Deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Aktiviert","ENABLE_DISABLE_SERVICES":"Aktivieren/Deaktivieren","ESSENTIAL_USER_COMMANDS":"Grundlegende Nutzerbefehle","FAIL2BAN":"Fail2Ban ist ein Software-Framework zur Einbruchsvermeidung, das Computerserver vor Brute-Force-Angriffen schützt.","FILEBROWSER":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Führe diesen Befehl via SSH aus, um das Installation-lock zu löschen.","FLEXGET":"FlexGet ist ein Mehrzweck-Automatisierungstool für alle Ihre Medien. Unterstützung für Torrents, NZBs, Podcasts, Comics, TV, Filme, RSS, HTML, CSV und mehr.","FLOOD":"Flood ist ein weiteres Webinterface für rtorrent. Es implementiert einen Node.js-Server, um mit der rTorrent-API zu kommunizieren, historische Daten zu speichern und die Web-Benutzeroberfläche zu bedienen.","FREE":"Frei","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Hilfsbefehle & Mehr","HOURS_L":"Stunden","INSTALL":"Installieren","INSTALLED":"Installiert","INSTALLING":"Installiere","ISSUE_REPORT_TXT":"Report an issue","In":"Eingehend","In_AVG":"Eingehend Mittelwert","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Wähle die Sprache aus","LATEST_COMMIT":"latest.","LECERT":"Let\'s Encrypt ist eine kostenlose, automatisierte und offene Certificate Authority (CA), die zum Nutzen der Öffentlichkeit betrieben wird. Es ist ein Service der Internet Security Research Group (ISRG).","Last 12 months":"Letzte 12 Monate","Last 30 days":"Letzte 30 Tage","MAIN_MENU":"Hauptmenü","MINUTES_L":"min","MOUNT_POINT":"Einhängepunkt","NAME":"Name","NETDATA":"Netdata ist eine verteilte Echtzeit-, Leistungs- und Zustandsüberwachung für Systeme und Anwendungen.","NETWORK":"Netzwerk","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC ist sowohl eine VNC-Client-JavaScript-Bibliothek als auch eine Anwendung, die auf dieser Bibliothek basiert. noVNC kann in allen modernen Browsern, einschließlich mobilen Browsern, verwendet werden (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Ausgehend","Out_AVG":"Ausgehend Mittelwert","PACKAGE_MANAGEMENT_CENTER":"Paket Management Center","PANEL_CONFIG":"Panel-Konfiguration","PANEL_RESET":"Panel zurücksetzen","PERCENTAGE_TXT":"Du hast schon {{used}}% deines gesamten Speicherplatzes belegt","PHYSICAL_MEMORY_IDLE_TXT":"frei","PHYSICAL_MEMORY_TITLE":"Physikalisch genutzter Speicher","PHYSICAL_MEMORY_USED_TXT":"belegt","PLEX":"Mit Plex kannst du deine Medien verwalten und auf jedes Gerät streamen, auf dem Plex verfügbar ist.","PLUGINS":"Plugins","PLUGIN_MENU":"Plugin Menü","PMC_NOTICE_TXT":"Achtung! Lass dir bitte gesagt sein, dass diese Optionen nicht die gleichen wie das Aktivieren und Deaktivieren eines Software-Paketes sind. Diese Optionen sind nur für das Installieren sowie Deinstallieren vorgesehen.","PMENU_NOTICE_TXT":"Hier kannst du ganz einfach die ruTorrent Plugins mit einem Klick auf den Namen installieren oder deinstallieren","QBITTORRENT":"qBittorrent ist ein kostenloser und zuverlässiger P2P-BitTorrent-Client. Ein erweiterter BitTorrent-Client für mehrere Plattformen mit einer schönen Qt-Benutzeroberfläche sowie eine Web-Benutzeroberfläche für die Fernsteuerung und eine integrierte Suchmaschine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"You are on the QuickBox commit - ","QUICK_SYSTEM_TIPS":"Quick System Tipps","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Tatsächlich freier Speicher {{free}}","REAL_MEMORY_TITLE":"Tatsächliche Speichernutzung","REAL_MEMORY_USAGE_TXT":"Tatsächlich verwendeter Speicher {{used}}","RECENT_UPDATES":"Recent Activity","REFRESH":"Aktualisieren","RESTART_SERVICES":"Dienste neustarten","RPLUGIN_MENU":"ruTorrent Plugin Menü","RTORRENT":"rTorrent ist ein schneller und effizienter BitTorrent-Client, der die Bibliothek libTorrent (nicht zu verwechseln mit libtorrent-rasterbar) verwendet und in Entwicklung ist. Es ist in C ++ geschrieben und verwendet die Programmierbibliothek ncurses, was bedeutet, dass es eine Text-Benutzerschnittstelle verwendet. Das ruTorrent-Frontend wird zusätzlich installiert.","RTORRENTS_TITLE":"Torrents in rTorrent","RUTORRENT":"ruTorrent ist ein Front-End für den beliebten Bittorrent-Client rtorrent. Hauptmerkmale: Leichte Server-Seite, so kann es auf alten und Low-End-Servern und sogar auf einigen SOHO-Routern installiert werden, Extensible - es gibt mehrere Plugins und jeder kann ihre eigenen erstellen, kommt mit club-QuickBox haut.","Recent hours":"Letzte Stunden","SCREEN_RTORRNENT_TXT":"Ermöglicht es dem Nutzer, rTorrent via SSH neuzustarten oder neu einzubinden.","SECONDS_L":"sek","SEEDBOX_COMMANDS":"Seedbox Befehle","SERVER_LOAD":"Server-Last","SERVICE_CONTROL_CENTER":"Dienst Kontrollcenter","SERVICE_STATUS":"Status der Dienste","SET_LANG_TXT":"Führe diesen Befehl via SSH aus, um die Spreche der Dashboard einzurichten.","SIZE":"Größe","SL_TXT":"Aktuelle Durchschnittsbelastung deines Servers","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"frei {{free}}","SWAP_TITLE":"Swap-Nutzung","SWAP_TOTAL_TXT":"SWAP Area","SWAP_USED_TXT":"belegt {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Syncthing ist eine quelloffen und in Go geschriebene Dateisynchronisation mit BitTorrent.","SYSTEM_RAM_STATUS":"Status deines Arbeitsspeichers","SYSTEM_RESPONSE_TITLE":"System-Antwort","SYS_UPGRADE_TXT":"Führe diesen Befehl via SSH aus, um Ihr QuickBox Lite-System zu aktualisieren.","Summary":"Zusammenfassung","THEME_CHANGE_TXT":"Sie sind dabei, Themen zu ändern. Wenn das Thema nach der Aktualisierung nicht korrekt für Sie erscheint, müssen Sie wahrscheinlich Ihren Browser-Cache löschen und erneut versuchen.","THEME_SELECT":"Thema wählen","TORRENTS_LOADED":"Es sind {{loaded}} Torrents im Moment geladen","TOTAL_L":"gesamt {{total}}","TOTAL_RAM":"Gesamter Arbeitsspeicher","TRANSMISSION":"Transmission ist für eine einfache, leistungsstarke verwendung ausgelegt. Die Standardeinstellungen sind auf „Just Work“ (Just Work) eingestellt. Die Konfiguration erweiterter Funktionen wie Watch-Verzeichnisse, fehlerhafte Peer-Blocklisten und die Webschnittstelle erfordert nur wenige Klicks. Als Ubuntu Transmission als Standard-BitTorrent-Client auswählte, war einer der am häufigsten genannten Gründe die einfache Lernkurve.","TROUBLESHOOT_TXT":"Führe diesen Befehl via SSH aus, um ein Log zur Fehlerbehebung zu erstellen.","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Dieser Tag","This hour":"Diese Stunde","This month":"Dieser Monat","Top 10 days":"Top 10 Tage","Total":"Gesamt","UNINSTALLED":"Deinstalliert","UNINSTALLING":"Deinstalliere","UNINSTALLING_TITLE":"Deinstalliere","UNINSTALLING_TXT_1":"Bitte warte kurz, während","UNINSTALLING_TXT_2":"von deinem System deinstalliert wird.","UNINSTALL_AUTODL_TXT":"Du bist gerade dabei, AutoDL-iRSSi auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit AutoDL-iRSSi neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_BTSYNC_TXT":"Du bist gerade dabei, BitTorrent Sync auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit BitTorrent Sync neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Du bist gerade dabei, Deluge auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner für alle Nutzer löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Deluge neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_EMBY_TXT":"Du bist gerade dabei, Emby Media Server auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Emby neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.","UNINSTALL_FILEBROWSEREE_TXT":"Du bist gerade dabei, File Browser auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit File Browser Enhanced neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_FILEBROWSER_TXT":"Du bist gerade dabei, File Browser auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit File Browser neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_FLEXGET_TXT":"Du bist gerade dabei, FlexGet auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit FlexGet neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_FLOOD_TXT":"Du bist gerade dabei, Flood auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Flood neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_JELLYFIN_TXT":"Du bist gerade dabei, Jellyfin Media Server auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Jellyfin neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.","UNINSTALL_NETDATA_TXT":"Du bist gerade dabei, Netdata auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Netdata neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Du bist gerade dabei, noVNC auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit noVNC neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Du bist gerade dabei, Plex Media Server auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Plex neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.","UNINSTALL_QBITTORRENT_TXT":"Du bist gerade dabei, qBittorrent auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit qBittorrent neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Du bist gerade dabei, Rclone auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Rclone neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_RTORRENT_TXT":"Du bist gerade dabei, rTorrent auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit rTorrent neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_RUTORRENT_TXT":"Du bist gerade dabei, ruTorrent auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit ruTorrent neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_SABNZBD_TXT":"Du bist gerade dabei, SABnzbd auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit SABnzbd neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Du bist gerade dabei, Syncthing auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Syncthing neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.","UNINSTALL_TITLE":"Deinstallieren","UNINSTALL_TRANSMISSION_TXT":"You are about to uninstall Transmission from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Transmission at any time, however, your configuration settings will be reset to default.","UNINSTALL_WEBDAV_TXT":"Du bist gerade dabei, WebDAV auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit WebDAV neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_X2GO_TXT":"Du bist gerade dabei, x2go auf deinem System zu deinstallieren.

Diese Aktion wird x2goserver und die xfce4-Desktopumgebung komplett von deinem System entfernen.","UNINSTALL_ZNC_TXT":"Du bist gerade dabei, ZNC auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit ZNC neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.","UPDATE":"Updater ausführen","UPLOAD":"Upload","UPTIME":"Betriebszeit","USED":"Verwendet","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Zeige weitere Bandbreiten-Details","WEB_CONSOLE":"Webkonsole","WEBDAV":"WebDAV steht für \\"Web-based Distributed Authoring and Versioning\\". Es basiert auf dem Hypertext Transfer Protocol, unterstützt mittlerweile aber auch HTTPS. Mit WebDAV können ganze Verzeichnisse übertragen werden. Zudem ist eine Versionskontrolle spezifiziert.","X2GO":"X2Go ist eine Open-Source Remote-Desktop-Software für Linux, die das NX-Technologie-Protokoll verwendet.","YOUR_DISK_STATUS":"Status deines Speicherplatzes","ZNC":"ZNC ist ein IRC-Netzwerk Bouncer oder BNC. Er kann den Clienten vom eigentlichen IRC-Server sowie ausgewählten Chaträumen trennen."}')},6247:e=>{e.exports=JSON.parse('{"AGREE":"I understand, do it!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi is a plugin for irssi that monitors IRC announce channels and downloads torrent files based on user-defined filters.","AVAILABILITY":"Availability","All time":"All time","BANDWIDTH_DATA":"Bandwidth Data","BOX":"BOX Only","BOX_TOOLTIP_ART":"Access this feature from ssh by typing: box install art","BOX_TOOLTIP_DENYHOSTS":"Access this feature from ssh by typing: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Access this feature from ssh by typing: box install fail2ban","BOX_TOOLTIP_H5AI":"Access this feature from ssh by typing: box install h5ai","BOX_TOOLTIP_LECERT":"Get new HTTPS certificate by typing: box install lecert","BOX_TOOLTIP_ZNC":"Access this feature from ssh by typing: box install znc","BTSYNC":"BitTorrent Sync by BitTorrent, Inc is a proprietary peer-to-peer file synchronization tool.","BW_SELECT":"Bandwidth Option","CACHED_MEMORY_BUFFERS_TXT":"Buffers are at {{buffered}}","CACHED_MEMORY_TITLE":"Cached Memory Usage","CACHED_MEMORY_USAGE_TXT":"Cache memory usage is at {{cached}}","CANCEL":"Cancel","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Typing this command in ssh allows you to change a desired users password.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Use the above command as root if/when you decide to clear your systems Physical Memory Cache","CLEAR_CACHE":"Clear Memory Cache","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Close & Refresh","COMPARE_COMMITS":"compare your current status to the latest commits.","CPU_STATUS":"CPU Status","CURRENT_COMMIT":"View your current commit status","CURRENT_VERSIONS_CHANGELOG":"View your current versions changelog.","DAYS_L":"days","DELUGE":"Deluge is a lightweight, Free Software, cross-platform BitTorrent client.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Details","DEV_REPO_TXT":"You are on the QuickBox {{branch}} Repo","DISABLED":"Disabled","DISKTEST_TXT":"Type this command to perform a quick r/w test of your disk.","DISK_SPACE":"Disk Space","DOWNLOAD":"Download","DOWNLOADS":"Downloads","DTORRENTS_TITLE":"Torrents in deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Enabled","ENABLE_DISABLE_SERVICES":"Enable/Disable","ESSENTIAL_USER_COMMANDS":"Essential User Commands","FAIL2BAN":"Fail2Ban is an intrusion prevention software framework that protects computer servers from brute-force attacks.","FILEBROWSER":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet is a multipurpose automation tool for all of your media Support for torrents, nzbs, podcasts, comics, TV, movies, RSS, HTML, CSV, and more.","FLOOD":"Flood is another web interface for rtorrent. It implements a Node.js server for communicating with the rTorrent API, storing historical data, and serving the web UI.","FREE":"Free","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Help Commands & More","HOURS_L":"hrs","INSTALL":"Install","INSTALLED":"Installed","INSTALLING":"Installing","ISSUE_REPORT_TXT":"Report an issue","In":"In","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Select Language","LATEST_COMMIT":"latest.","LECERT":"Let\'s Encrypt is a free, automated, and open certificate authority (CA), run for the public\'s benefit. It is a service provided by the Internet Security Research Group (ISRG).","Last 12 months":"Last 12 months","Recent hours":"Recent hours","Last 30 days":"Last 30 days","MAIN_MENU":"Main Menu","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Name","NETDATA":"Netdata is distributed, real-time, performance and health monitoring for systems and applications.","NETWORK":"Network","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Out","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Package Management Center","PANEL_CONFIG":"Panel Config","PANEL_RESET":"Reset Panel","PERCENTAGE_TXT":"You have used {{used}}% of your total disk space","PHYSICAL_MEMORY_IDLE_TXT":"idle","PHYSICAL_MEMORY_TITLE":"Physical Memory Usage","PHYSICAL_MEMORY_USED_TXT":"used","PLEX":"Plex lets you stream your content to any Plex enabled device.","PLUGINS":"Plugins","PLUGIN_MENU":"Plugin Menu","PMC_NOTICE_TXT":"Heads Up! Please be advised that these options are not the same as enabling and disabling a software package. These options are designed to either install or uninstall.","PMENU_NOTICE_TXT":"Easily install and uninstall ruTorrent plugins simply by clicking on the plugin name","QBITTORRENT":"qBittorrent is a free and reliable P2P BitTorrent client. An advanced and multi-platform BitTorrent client with a nice Qt user interface as well as a Web UI for remote control and an integrated search engine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"You are on the QuickBox commit - ","QUICK_SYSTEM_TIPS":"Quick System Tips","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Real memory free {{free}}","REAL_MEMORY_TITLE":"Real Memory Usage","REAL_MEMORY_USAGE_TXT":"Real memory usage {{used}}","RECENT_UPDATES":"Recent Activity","REFRESH":"Refresh","RESTART_SERVICES":"Restart Services","RPLUGIN_MENU":"ruTorrent Plugin Menu","RTORRENT":"rTorrent is a text-based BitTorrent client written in C++, based on the ncurses and libTorrent (not to be confused with libtorrent) libraries for Unix, whose author\'s goal is \\"a focus on high performance and good code\\".","RTORRENTS_TITLE":"Torrents in rtorrent","RUTORRENT":"ruTorrent is a front-end for the popular Bittorrent client rtorrent. Main features: Lightweight server side, so it can be installed on old and low-end servers and even on some SOHO routers, Extensible - there are several plugins and everybody can create their own one, comes with club-QuickBox skin.","SCREEN_RTORRNENT_TXT":"allows user to restart/remount rtorrent from SSH","SECONDS_L":"sec","SEEDBOX_COMMANDS":"Seedbox Commands","SERVER_LOAD":"Server Load","SERVICE_CONTROL_CENTER":"Service Control Center","SERVICE_STATUS":"Service Status","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Size","SL_TXT":"This is your servers current load average","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"idle {{free}}","SWAP_TITLE":"Swap Usage","SWAP_TOTAL_TXT":"SWAP Area","SWAP_USED_TXT":"used {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Open Source Continuous File Synchronization with BitTorrent","SYSTEM_RAM_STATUS":"System RAM Status","SYSTEM_RESPONSE_TITLE":"System Response","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Summary","THEME_CHANGE_TXT":"You are about to change themes. If the theme doesn\'t appear correctly for you after the refresh, you probably need to clear your browser cache and retry.","THEME_SELECT":"Select Theme","TORRENTS_LOADED":"There are {{loaded}} torrents loaded","TOTAL_L":"total {{total}}","TOTAL_RAM":"Total System RAM","TRANSMISSION":"Transmission is designed for easy, powerful use. The defaults are set to Just Work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"This day","This hour":"This hour","This month":"This month","Top 10 days":"Top 10 days","Total":"Total","UNINSTALLED":"Uninstalled","UNINSTALLING":"Uninstalling","UNINSTALLING_TITLE":"Uninstalling","UNINSTALLING_TXT_1":"Please wait while","UNINSTALLING_TXT_2":"is being uninstalled from your system.","UNINSTALL_AUTODL_TXT":"You are about to uninstall AutoDL-iRSSi from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall AutoDL-iRSSi at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_BTSYNC_TXT":"You are about to uninstall BitTorrent Sync from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall BitTorrent Sync at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"You are about to uninstall Deluge from your system.

This will completely remove all of your configuration and shared folder settings for all users... this action is irreversible.

You may reinstall Deluge at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_EMBY_TXT":"You are about to uninstall Emby Media Server from your system.

This will completely remove all of your configuration and library settings... this action is irreversible.

You may reinstall Emby at any time, however, your library settings will be reset to default.","UNINSTALL_FILEBROWSEREE_TXT":"You are about to uninstall File Browser Enhanced from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall File Browser Enhanced at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_FILEBROWSER_TXT":"You are about to uninstall filebrowser from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall filebrowser at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_FLEXGET_TXT":"You are about to uninstall flexget from your system.

This will completely remove all of your configurations... this action is irreversible.

You may reinstall flexget at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_FLOOD_TXT":"You are about to uninstall Flood from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall Flood at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_JELLYFIN_TXT":"You are about to uninstall Jellyfin Media Server from your system.

This will completely remove all of your configuration and library settings... this action is irreversible.

You may reinstall Jellyfin at any time, however, your library settings will be reset to default.","UNINSTALL_NETDATA_TXT":"You are about to uninstall Netdata from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall Netdata at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"You are about to uninstall noVNC from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall noVNC at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"You are about to uninstall Plex Media Server from your system.

This will completely remove all of your configuration and library settings... this action is irreversible.

You may reinstall Plex at any time, however, your library settings will be reset to default.","UNINSTALL_QBITTORRENT_TXT":"You are about to uninstall qBittorrent from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent at any time, however, your configuration settings will be reset to default.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"You are about to uninstall Rclone from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Rclone at any time, however, your configuration settings will be reset to default.","UNINSTALL_RTORRENT_TXT":"You are about to uninstall rTorrent from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall rTorrent at any time, however, your configuration settings will be reset to default.","UNINSTALL_RUTORRENT_TXT":"You are about to uninstall ruTorrent from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall ruTorrent at any time, however, your configuration settings will be reset to default.","UNINSTALL_SABNZBD_TXT":"You are about to uninstall SABnzbd from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall SABnzbd at any time, however, your configuration settings will be reset to default.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall LibreSpeed at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"You are about to uninstall Syncthing from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_TITLE":"Uninstall","UNINSTALL_TRANSMISSION_TXT":"You are about to uninstall Transmission from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Transmission at any time, however, your configuration settings will be reset to default.","UNINSTALL_WEBDAV_TXT":"You are about to uninstall WebDAV from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall WebDAV at any time, however, your configuration settings will be reset to default.","UNINSTALL_X2GO_TXT":"You are about to uninstall x2go from your system.

This will completely remove x2goserver and xfce4 desktop environment from your system.","UNINSTALL_ZNC_TXT":"You are about to uninstall ZNC from your system.

This will completely remove all of your configurations and settings... this action is irreversible.

You may reinstall ZNC at any time, however, your settings will be reset to default.","UPDATE":"Run Updater","UPLOAD":"Upload","UPTIME":"Uptime","USED":"Used","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"View Additional Bandwidth Details","WEB_CONSOLE":"Web Console","WEBDAV":"WebDAV stands for \\"Web-based Distributed Authoring and Versioning\\". It is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.","X2GO":"X2Go is an open source remote desktop software for Linux that uses the NX technology protocol.","YOUR_DISK_STATUS":"Your Disk Status","ZNC":"ZNC is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels."}')},8880:e=>{e.exports=JSON.parse('{"AGREE":"Lo entiendo ¡hazlo!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi es un plugin para irssi que supervisa los anuncios en canales IRC y descarga archivos de torrent según los filtros definidos por el usuario.","AVAILABILITY":"Disponibilidad","All time":"Siempre","BANDWIDTH_DATA":"Uso de la red","BOX":"Solo BOX","BOX_TOOLTIP_ART":"Accede a esta característica desde SSH escribiendo: box install art","BOX_TOOLTIP_DENYHOSTS":"Accede a esta característica desde SSH escribiendo: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Accede a esta característica desde SSH escribiendo: box install fail2ban","BOX_TOOLTIP_H5AI":"Accede a esta característica desde SSH escribiendo: box install h5ai","BOX_TOOLTIP_LECERT":"Accede a esta característica desde SSH escribiendo: box install lecert","BOX_TOOLTIP_ZNC":"Accede a esta característica desde SSH escribiendo: box install znc","BTSYNC":"BitTorrent Sync de BitTorrent, Inc es un software propietario basado en P2P para la sincronización e intercambio de archivos.","BW_SELECT":"Opción de ancho de banda","CACHED_MEMORY_BUFFERS_TXT":"El buffer está en {{buffered}}","CACHED_MEMORY_TITLE":"Uso de Memoria Caché","CACHED_MEMORY_USAGE_TXT":"El uso de Memoria Caché está en {{cached}}","CANCEL":"Cancelar","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Escribe este comando por SSH para cambiar la contraseña del usuario deseado.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Utiliza este comando como usuario root cuando quieras limpiar la memoria caché de tu sistema.","CLEAR_CACHE":"Limpiar Memoria Caché","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Cerrar y Refrescar","COMPARE_COMMITS":"Compara el estado actual de tu servidor con los últimos commits.","CPU_STATUS":"Estado del Procesador","CURRENT_COMMIT":"Ver el estado del commit actual.","CURRENT_VERSIONS_CHANGELOG":"Comprueba el registro de cambios de tu versión actual.","DAYS_L":"días","DELUGE":"Deluge es un cliente BitTorrent multiplataforma ligero y liviano, de software libre.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Detalles","DEV_REPO_TXT":"Estás en el repositorio de {{branch}} de Quickbox","DISABLED":"Deshabilitado","DISKTEST_TXT":"Escribe este comando para realizar un test de lectura/escritura en tu disco duro.","DISK_SPACE":"Espacio","DOWNLOAD":"Descarga","DOWNLOADS":"Descargas","DTORRENTS_TITLE":"Torrents en deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Habilitado","ENABLE_DISABLE_SERVICES":"Activar/Desactivar","ESSENTIAL_USER_COMMANDS":"Comandos esenciales","FAIL2BAN":"Fail2Ban is an intrusion prevention software framework that protects computer servers from brute-force attacks.","FILEBROWSER":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet es una herramienta de automatización multipropósito para todos sus medios. Soporte para torrents, nzbs, podcasts, comics, TV, películas, RSS, HTML, CSV, y más.","FLOOD":"Flood es una interfaz web para rtorrent. Implementa un servidor Node.js para comunicarse con la API de rTorrent, almacenar datos históricos y servir a la interfaz web.","FREE":"Libre","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Comandos de ayuda","HOURS_L":"horas","INSTALL":"Instalar","INSTALLED":"Instalado","INSTALLING":"Instalando","ISSUE_REPORT_TXT":"Informa de un problema","In":"Bajada","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Elige un idioma","LATEST_COMMIT":"último.","LECERT":"Let\'s Encrypt es una autoridad de certificación (CA) gratuita, automatizada y abierta, que se ejecuta en beneficio del público por el Grupo de Investigación de Seguridad de Internet (ISRG).","Last 12 months":"Últimos 12 meses","Last 30 days":"Últimos 30 días","MAIN_MENU":"Menú principal","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Nombre","NETDATA":"Netdata is distributed, real-time, performance and health monitoring for systems and applications.","NETWORK":"Red","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Subida","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Gestión de Paquetes","PANEL_CONFIG":"Configuración del panel","PANEL_RESET":"Restablecer panel","PERCENTAGE_TXT":"Tienes ocupado el {{used}}% del espacio total de tu disco duro","PHYSICAL_MEMORY_IDLE_TXT":"inactiva","PHYSICAL_MEMORY_TITLE":"Uso de Memoria Física","PHYSICAL_MEMORY_USED_TXT":"en uso","PLEX":"Plex lets you stream your content to any Plex enabled device.","PLUGINS":"Plugins","PLUGIN_MENU":"Menú de plugins","PMC_NOTICE_TXT":"¡Atención! Por favor, ten en cuenta que estas opciones no consisten en activar o desactivar paquetes de software. Estas opciones sirven para instalar y desinstalar programas.","PMENU_NOTICE_TXT":"Instala y desinstala plugins de ruTorrent pinchando sobre su nombre","QBITTORRENT":"qBittorrent is a free and reliable P2P BitTorrent client. An advanced and multi-platform BitTorrent client with a nice Qt user interface as well as a Web UI for remote control and an integrated search engine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"Estás en el commit de Quickbox - ","QUICK_SYSTEM_TIPS":"Comandos de sistema","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Memoria Real Libre {{free}}","REAL_MEMORY_TITLE":"Uso de Memoria Real","REAL_MEMORY_USAGE_TXT":"Uso de Memoria Real {{used}}","RECENT_UPDATES":"Actividad Reciente","REFRESH":"Refrescar","RESTART_SERVICES":"Reiniciar","RPLUGIN_MENU":"Menú de plugins de ruTorrent","RTORRENT":"rTorrent es un cliente de BitTorrent rápido y eficiente que utiliza, y está en desarrollo junto con, la biblioteca libTorrent (que no debe confundirse con libtorrent-rasterbar). Está escrito en C ++ y usa la biblioteca de programación ncurses, lo que significa que usa una interfaz de usuario de texto.","RTORRENTS_TITLE":"Torrents en rtorrent","RUTORRENT":"ruTorrent es una interfaz web para el popular cliente de Bittorrent, rtorrent. Características principales: Liviano y ligero, por lo que puede instalarse en servidores antiguos y de gama baja, e incluso en algunos routers SOHO, Extensible: hay muchos plugins y todos pueden crear uno, viene con el tema club-QuickBox.","Recent hours":"Horarios recientes","SCREEN_RTORRNENT_TXT":"Permite reiniciar rtorrent desde SSH","SECONDS_L":"seg","SEEDBOX_COMMANDS":"Comandos de Seedbox","SERVER_LOAD":"Carga del Servidor","SERVICE_CONTROL_CENTER":"Control de Servicios","SERVICE_STATUS":"Estado","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Tamaño","SL_TXT":"Carga media de tu servidor","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"inactiva {{free}}","SWAP_TITLE":"Uso de Memoria SWAP","SWAP_TOTAL_TXT":"Memoria SWAP","SWAP_USED_TXT":"en uso {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Herramienta de código abierto para la sincronización continua de archivos mediante BitTorrent.","SYSTEM_RAM_STATUS":"Memoria RAM","SYSTEM_RESPONSE_TITLE":"Respuesta del Sistema","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Resumen","THEME_CHANGE_TXT":"Estás a punto de cambiar de tema. Si el tema selecciona no se muestra correctamente después de refrescar la página, probablemente necesitas limpiar la memoria caché de tu navegador y reintentarlo.","THEME_SELECT":"Elige un tema","TORRENTS_LOADED":"Tienes {{loaded}} torrents compartiendo","TOTAL_L":"total {{total}}","TOTAL_RAM":"RAM total del sistema","TRANSMISSION":"Transmission está diseñado para un uso sencillo pero potente. La configuración por defecto está establecida para funcionar de inicio, pero con unos pocos clicks se pueden añadir funciones avanzadas como monitorización de directorios, listas de bloqueo para pares malintencionados, y una interfaz web. Cuando Ubuntu establece Transmission como su cliente web por defecto, es debido a su cómoda curva de aprendizaje.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Hoy","This hour":"Última hora","This month":"Este mes","Top 10 days":"Mejores 10 días","Total":"Total","UNINSTALLED":"Desinstalado","UNINSTALLING":"Desinstalando","UNINSTALLING_TITLE":"Desinstalando","UNINSTALLING_TXT_1":"Por favor, espera,","UNINSTALLING_TXT_2":"está siendo desinstalado de tu sistema.","UNINSTALL_AUTODL_TXT":"Estás a punto de desinstalar AutoDL-iRSSi de tu sistema.

Esto eliminará completamente toda la configuración y los ajustes de directorios compartidos... esta acción es irreversible.

Puedes reinstalar AutoDL-iRSSi en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_BTSYNC_TXT":"Estás a punto de desinstalar BitTorrent Sync de tu sistema.

Esto eliminará completamente toda la configuración y los ajustes de directorios compartidos... esta acción es irreversible.

Puedes reinstalar BitTorrent Sync en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Estás a punto de desinstalar Deluge de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Deluge en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_EMBY_TXT":"Estás a punto de desinstalar Emby Media Server de tu sistema.

Esto eliminará completamente toda la configuración y ajustes de biblioteca... esta acción es irreversible.

Puedes reinstalar Emby en cualquier momento, sin embargo, la configuración de tu biblioteca será reiniciada por defecto.","UNINSTALL_FILEBROWSEREE_TXT":"Estás a punto de desinstalar File Browser Enhanced de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar File Browser Enhanced en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_FILEBROWSER_TXT":"Estás a punto de desinstalar File Browser de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar File Browser en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_FLEXGET_TXT":"Estás a punto de desinstalar FlexGet de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar FlexGet en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_FLOOD_TXT":"Estás a punto de desinstalar Flood de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Flood en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_JELLYFIN_TXT":"Estás a punto de desinstalar Jellyfin Media Server de tu sistema.

Esto eliminará completamente toda la configuración y ajustes de biblioteca... esta acción es irreversible.

Puedes reinstalar Jellyfin en cualquier momento, sin embargo, la configuración de tu biblioteca será reiniciada por defecto.","UNINSTALL_NETDATA_TXT":"Estás a punto de desinstalar Netdata de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Netdata en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Estás a punto de desinstalar noVNC de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar noVNC en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Estás a punto de desinstalar Plex Media Server de tu sistema.

Esto eliminará completamente toda la configuración y ajustes de biblioteca... esta acción es irreversible.

Puedes reinstalar Plex en cualquier momento, sin embargo, la configuración de tu biblioteca será reiniciada por defecto.","UNINSTALL_QBITTORRENT_TXT":"Estás a punto de desinstalar qBittorrent de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar qBittorrent en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Estás a punto de desinstalar Rclone de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Rclone en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_RTORRENT_TXT":"Estás a punto de desinstalar rTorrent de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar rTorrent en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_RUTORRENT_TXT":"Estás a punto de desinstalar ruTorrent de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar ruTorrent en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_SABNZBD_TXT":"Estás a punto de desinstalar SABnzbd de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar SABnzbd en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Estás a punto de desinstalar Syncthing de tu sistema.

Esto eliminará completamente toda la configuración... esta acción es irreversible.

Puedes reinstalar Syncthing en cualquier momento, pero tus ajustes serán establecidos por defecto.","UNINSTALL_TITLE":"Desinstalar","UNINSTALL_TRANSMISSION_TXT":"Estás a punto de desinstalar Transmission de tu sistema.

Esto eliminará completamente toda la configuración... esta acción es irreversible.

Puedes reinstalar Transmission cuando desees, pero tus ajustes serán establecidos por defecto.","UNINSTALL_WEBDAV_TXT":"Estás a punto de desinstalar WebDAV de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar WebDAV en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_X2GO_TXT":"Estás a punto de desinstalar x2go de tu sistema.

Esto eliminará completamente x2goserver y el entorno xfce4, de tu sistema.","UNINSTALL_ZNC_TXT":"Estás a punto de desinstalar ZNC de tu sistema.

Esto eliminará completamente toda la configuración y tus ajustes... esta acción es irreversible.

Puedes reinstalar ZNC cuando desees, pero tus ajustes serán establecidos por defecto.","UPDATE":"Actualizar","UPLOAD":"Subida ","UPTIME":"Tiempo encendido","USED":"Utilizado","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Detalles adicionales de la red","WEB_CONSOLE":"Consola Web","WEBDAV":"WebDAV es un grupo de trabajo del Internet Engineering Task Force. El término significa \\"Autoría y versionado distribuidos por Web\\" (Web Distributed Authoring and Versioning), y se refiere al protocolo (más precisamente, a la extensión del protocolo) que el grupo definió.","X2GO":"X2Go es un software de código abierto para acceso remoto al escritorio que utiliza el protocolo NX.","YOUR_DISK_STATUS":"Disco Duro","ZNC":"ZNC es un bouncer o BNC para IRC. Permite separar al cliente del servidor IRC, e incluso de canales concretos."}')},6964:e=>{e.exports=JSON.parse('{"AGREE":"Je comprends, fais-le!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi est un plugin pour iRSSi qui surveille les canaux IRC et télécharge des fichiers torrent basés sur des filtres définis par l\'utilisateur.","AVAILABILITY":"Disponibilité","All time":"Au Total","BANDWIDTH_DATA":"Bande Passante","BOX":"BOX requis","BOX_TOOLTIP_ART":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install art","BOX_TOOLTIP_DENYHOSTS":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install fail2ban","BOX_TOOLTIP_H5AI":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install h5ai","BOX_TOOLTIP_LECERT":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install lecert","BOX_TOOLTIP_ZNC":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install znc","BTSYNC":"BitTorrent Sync par BitTorrent.Inc est un outil propriétaire peer-to-peer de synchronisation de fichiers.","BW_SELECT":"Option de bande passante","CACHED_MEMORY_BUFFERS_TXT":"Mémoire tampon est à {{buffered}}","CACHED_MEMORY_TITLE":"Utilisation de la Mémoire Cache","CACHED_MEMORY_USAGE_TXT":"Mémoire cache utilisée {{cached}}","CANCEL":"Annuler","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Tapez cette commande en SSH vous permet de changer les mots de passe des utilisateurs.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Tapez cette commande en tant que root si/quand vous décidez de nettoyer le cache de Mémoire Physique.","CLEAR_CACHE":"Nettoyer le cache Mémoire","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Fermer & Rafraîchir","COMPARE_COMMITS":"Comparez votre état actuel avec les derniers commits.","CPU_STATUS":"Statut CPU","CURRENT_COMMIT":"Voir l\'état de votre dernier commit","CURRENT_VERSIONS_CHANGELOG":"Affiche le changelog de la version actuelle.","DAYS_L":"jours","DELUGE":"Deluge est un client BitTorrent léger, gratuit et multi-plateforme.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Détails","DEV_REPO_TXT":"Vous êtes sur le Repo {{branch}} QuickBox","DISABLED":"Désactivé","DISKTEST_TXT":"Tapez cette commande pour effectuer un rapide test de lecture/écriture sur votre disque.","DISK_SPACE":"Espace Disque","DOWNLOAD":"Download","DOWNLOADS":"Téléchargement","DTORRENTS_TITLE":"Torrents dans Deluge: ","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Activé","ENABLE_DISABLE_SERVICES":"Activer/Désactiver mes Services","ESSENTIAL_USER_COMMANDS":"Commandes utilisateur essentielles","FAIL2BAN":"Fail2Ban est une structure logicielle de prévention des intrusions qui protège les serveurs d\'ordinateur des attaques par force brute.","FILEBROWSER":"FileBrowser fournit une interface de gestion de fichiers dans un répertoire spécifié et peut être utilisé pour télécharger, supprimer, prévisualiser, renommer et éditer vos fichiers. Il permet la création de plusieurs utilisateurs et chaque utilisateur peut avoir son propre répertoire.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet est un outil d\'automatisation polyvalent pour tous vos médias. Il prends en charge des torrents, NZBs, podcasts, bandes dessinées, télévision, films, flux RSS, HTML, CSV, etc.","FLOOD":"Flood est une autre interface web pour rtorrent. Il implémente un serveur Node.js pour communiquer avec l\'API rTorrent, stocker des données historiques et servir l\'interface utilisateur Web.","FREE":"Libre","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Commandes d\'aide","HOURS_L":"hrs","INSTALL":"Installer","INSTALLED":"Installé","INSTALLING":"Installation","ISSUE_REPORT_TXT":"Reporter un problème","In":"Entrant","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Langue","LATEST_COMMIT":"Dernier.","LECERT":"Let\'s Encrypt est une autorité de certification (CA) gratuite, automatisée et ouverte, exploitée pour le bénéfice du public. Il s\'agit d\'un service fourni par l\' Internet Security Research Group (ISRG).","Last 12 months":"Les 12 derniers mois","Last 30 days":"Les 30 derniers jours","MAIN_MENU":"Menu Principal","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Nom","NETDATA":"Netdata est une surveillance distribuée, en temps réel, des performances et de l\'intégrité des systèmes et des applications.","NETWORK":"Réseau","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Sortant","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Centre de gestion des Packages","PANEL_CONFIG":"Configuration du panneau","PANEL_RESET":"Réinitialiser le panneau","PERCENTAGE_TXT":"Vous avez utilisé {{used}}% de votre espace disque total","PHYSICAL_MEMORY_IDLE_TXT":"Libre","PHYSICAL_MEMORY_TITLE":"Utilisation de la Mémoire Physique","PHYSICAL_MEMORY_USED_TXT":"Utilisé","PLEX":"Plex lets you stream your content to any Plex enabled device.","PLUGINS":"Plugins","PLUGIN_MENU":"Menu Plugins","PMC_NOTICE_TXT":"Attention! Ces options ne sont pas les mêmes que pour l\'activation et la désactivation d\'un logiciel. Elles sont conçues uniquement pour les installer ou désinstaller.","PMENU_NOTICE_TXT":"Installez et désinstallez facilement les plugins ruTorrent en cliquant simplement sur le nom du plugin.","QBITTORRENT":"qBittorrent est un client BitTorrent multi-plateforme, multilingue, léger et libre. Livré avec une interface utilisateur agréable et un moteur de recherche intégré.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"Vous êtes sur le commit - ","QUICK_SYSTEM_TIPS":"Astuces","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Mémoire Réelle libre {{free}}","REAL_MEMORY_TITLE":"Utilisation de la Mémoire Réelle","REAL_MEMORY_USAGE_TXT":"Mémoire Réelle utilisée {{used}}","RECENT_UPDATES":"Activités Récentes","REFRESH":"Rafraîchir","RESTART_SERVICES":"Redémarrer mes Services","RPLUGIN_MENU":"Menu Plugins ruTorrent","RTORRENT":"rTorrent est un client BitTorrent rapide et efficace qui utilise, la bibliothèque libTorrent (à ne pas confondre avec libtorrent-rasterbar). Il est écrit en C ++ et utilise la bibliothèque de programmation ncurses, ce qui signifie qu\'il utilise une interface utilisateur texte. L\'interface de ruTorrent sera installée en plus.","RTORRENTS_TITLE":"Torrents dans rTorrent: ","RUTORRENT":"ruTorrent est l\'interface front-end du client Bittorrent \'rTorrent\'. Très léger côté serveur, il peut être installé sur des serveurs anciens et bas de gamme et même sur certains routeurs SOHO. Il existe plusieurs plugins pour que tout le monde puisse créer l\'interface qui lui ressemble, d\'ailleurs il vient avec notre thème maison : club-QuickBox.","Recent hours":"Heures récentes","SCREEN_RTORRNENT_TXT":"Autorise l\'utilisateur à redémarrer/remonter rTorrent en SSH.","SECONDS_L":"sec","SEEDBOX_COMMANDS":"Commandes Seedbox","SERVER_LOAD":"Charge Serveur","SERVICE_CONTROL_CENTER":"Centre de contrôle des services","SERVICE_STATUS":"Statut des services","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Taille","SL_TXT":"Ceci est la moyenne de charge de votre serveur.","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"Libre {{free}}","SWAP_TITLE":"Utilisation Swap","SWAP_TOTAL_TXT":"Zone SWAP","SWAP_USED_TXT":"Utilisé {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Syncthing est une application open source vous permettant de synchroniser vos fichiers en continu avec BitTorrent.","SYSTEM_RAM_STATUS":"Statut mémoire RAM","SYSTEM_RESPONSE_TITLE":"Réponse Système","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Sommaire","THEME_CHANGE_TXT":"Vous allez changer de thème. Si le thème ne s\'affiche pas correctement après le rafraîchissement, il vous faudra probablement effacer le cache de votre navigateur et réessayer.","THEME_SELECT":"Thème","TORRENTS_LOADED":"Il y a {{loaded}} torrents chargés","TOTAL_L":"total {{total}}","TOTAL_RAM":"RAM Totale du Système: ","TRANSMISSION":"Transmission est conçue pour une utilisation facile et puissante. Les valeurs par défaut sont définies sur \'Just Work\' et il suffit de quelques clics pour configurer les fonctionnalités avancées telles que les répertoires de surveillance, les listes de blocage des pairs et l\'interface Web. Quand Ubuntu a choisi Transmission comme client BitTorrent par défaut, l\'une des raisons les plus citées était sa courbe d\'apprentissage facile.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Aujourd\' hui","This hour":"Cette Heure","This month":"Ce Mois-ci","Top 10 days":"Les 10 meilleurs jours","Total":"Total","UNINSTALLED":"Désinstallé","UNINSTALLING":"Désinstallation","UNINSTALLING_TITLE":"Désinstallation","UNINSTALLING_TXT_1":"Patientez pendant que","UNINSTALLING_TXT_2":"soit désinstallé de votre système.","UNINSTALL_AUTODL_TXT":"Vous êtes sur le point de désinstaller AutoDL-iRSSi de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés ... cette action est irréversible.

Vous pouvez réinstaller AutoDL-iRSSi à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_BTSYNC_TXT":"Vous êtes sur le point de désinstaller BitTorrent Sync de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés ... cette action est irréversible.

Vous pouvez réinstaller BitTorrent Sync à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Vous êtes sur le point de désinstaller Deluge de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Deluge à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_EMBY_TXT":"Vous êtes sur le point de désinstaller Emby Media Server de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller Emby à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_FILEBROWSEREE_TXT":"Vous êtes sur le point de désinstaller File Browser Enhanced de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller File Browser Enhanced à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_FILEBROWSER_TXT":"Vous êtes sur le point de désinstaller File Browser de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller File Browser à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_FLEXGET_TXT":"Vous êtes sur le point de désinstaller FlexGet de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller FlexGet à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_FLOOD_TXT":"Vous êtes sur le point de désinstaller Flood de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Flood à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_JELLYFIN_TXT":"Vous êtes sur le point de désinstaller Jellyfin Media Server de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller Jellyfin à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_NETDATA_TXT":"Vous êtes sur le point de désinstaller Netdata de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Netdata à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Vous êtes sur le point de désinstaller noVNC de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller noVNC à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Vous êtes sur le point de désinstaller Plex Media Server de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller Plex à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_QBITTORRENT_TXT":"Vous êtes sur le point de désinstaller qBittorrent de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller qBittorrent à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Vous êtes sur le point de désinstaller Rclone de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Rclone à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_RTORRENT_TXT":"Vous êtes sur le point de désinstaller rTorrent de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller rTorrent à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_RUTORRENT_TXT":"Vous êtes sur le point de désinstaller ruTorrent de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller ruTorrent à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_SABNZBD_TXT":"Vous êtes sur le point de désinstaller SABnzbd de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller SABnzbd à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Vous êtes sur le point de désinstaller Syncthing de votre système.

Cela va complètement supprimer tous ses paramètres... cette action est irréversible.

Vous pouvez réinstaller Syncthing à tout moment, cependant, vos paramètres de configuration seront réinitialisés.","UNINSTALL_TITLE":"Désinstaller","UNINSTALL_TRANSMISSION_TXT":"Vous êtes sur le point de désinstaller Transmission de votre système.

Cela va complètement supprimer tous ses paramètres... cette action est irréversible.

Vous pouvez réinstaller Transmission à tout moment, cependant, vos paramètres de configuration seront réinitialisés.","UNINSTALL_WEBDAV_TXT":"Vous êtes sur le point de désinstaller WebDAV de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller WebDAV à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_X2GO_TXT":"Vous êtes sur le point de désinstaller x2go de votre système.

Cela va complètement supprimer x2goserver et l\'environnement de bureau xfce4 de votre système.","UNINSTALL_ZNC_TXT":"Vous êtes sur le point de désinstaller ZNC de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible.

Vous pouvez réinstaller ZNC à tout moment, cependant, vos paramètres seront réinitialisés.","UPDATE":"Lancer mise à jour","UPLOAD":"Upload","UPTIME":"Uptime","USED":"Utilisé","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Voir les détails additionnels","WEB_CONSOLE":"Console Web","WEBDAV":"WebDAV (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP défini par le groupe de travail Internet Engineering Task Force du même nom.","X2GO":"X2Go est un logiciel de bureau à distance open source pour Linux qui utilise le protocole de technologie NX.","YOUR_DISK_STATUS":"Statut Du Disque","ZNC":"ZNC est un bouncer IRC sous licence GPL. Celui-ci sera connecté en permanence à vos salons de discussions et fera office de passerelle entre votre client et vos serveurs IRC."}')},7893:e=>{e.exports=JSON.parse('{"AGREE":"我明白,继续!","APP_INSTALL_TXT":"使用此命令安装软件","APP_UNINSTALL_TXT":"使用此命令卸载软件","APP_UPGRADE_TXT":"使用此命令升级软件","ART":"Auto Remove Torrents 可以根据你设置的策略自动地删除种子, 无需担心磁盘空间问题.","AUTODL":"AutoDL-iRSSi 是一个 irssi 插件, 用于监视 IRC 发布频道并且可以根据用户定义的过滤器下载.","AVAILABILITY":"状态","All time":"所有时间","BANDWIDTH_DATA":"带宽数据","BOX":"仅限 BOX","BOX_TOOLTIP_ART":"从 Web 控制台输入: box install art 安装此功能","BOX_TOOLTIP_DENYHOSTS":"从 Web 控制台输入: box install denyhosts 安装此功能","BOX_TOOLTIP_FAIL2BAN":"从 Web 控制台输入: box install fail2ban 启用此功能","BOX_TOOLTIP_H5AI":"从 Web 控制台输入: box install h5ai 安装此功能","BOX_TOOLTIP_LECERT":"从 Web 控制台输入: box install lecert 自动签发 HTTPS 证书","BOX_TOOLTIP_ZNC":"从 Web 控制台输入: box install znc 访问此功能","BTSYNC":"BitTorrent 公司的 BitTorrent Sync 是一个专有的对等文件同步工具.","BW_SELECT":"流量排序","CACHED_MEMORY_BUFFERS_TXT":"缓冲区 {{buffered}}","CACHED_MEMORY_TITLE":"高速缓存使用情况","CACHED_MEMORY_USAGE_TXT":"高速缓存已使用 {{cached}}","CANCEL":"取消","CHANGEINTERFACE_TXT":"使用此命令设置仪表盘统计的网口.","CHANGEUSERPASS_TXT":"在SSH中输入此命令来更改所需的用户密码.","CIFS":"服务器消息块(SMB),又称网络文件共享系统(CIFS),使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源.","CLEAN_LOG_TXT":"使用此命令清理安装日志","CLEAN_MEM_TXT":"如果你决定清除系统的缓存, 请以root身份使用上述命令","CLEAR_CACHE":"清除缓存","CLEAR_LOCK":"清除锁定","CLEAR_LOCK_TXT":"检测到软件安装锁. 如果上次安装过程发生意外, 可以点击按钮解除锁定","CLOSE_REFRESH":"关闭 & 刷新","COMPARE_COMMITS":"将当前状态与最新提交进行比较。","CPU_STATUS":"CPU状态","CURRENT_COMMIT":"查看你当前的提交状态","CURRENT_VERSIONS_CHANGELOG":"查看你当前的版本更新日志。","DAYS_L":"天","DELUGE":"Deluge 是一款轻量级的免费软件, 跨平台的BitTorrent客户端.","DENYHOSTS":"DenyHosts 是针对 SSH 服务器的一个基于日志的入侵预防安全工具, 它使用Python编写.","DETAILS":"详情","DEV_REPO_TXT":"你当前在 QuickBox {{branch}} 分支","DISABLED":"禁用","DISKTEST_TXT":"输入此命令来对磁盘进行一个快速的读写测试","DISK_SPACE":"磁盘空间","DOWNLOAD":"下载","DOWNLOADS":"下载","DTORRENTS_TITLE":"deluge的种子","EMBY":"Emby 是一个主从式架构的媒体服务器软件,可以用来整理服务器上的视频和音频,并将音频和视频流式传输到客户端设备.","ENABLED":"已启用","ENABLE_DISABLE_SERVICES":"启用/禁用","ESSENTIAL_USER_COMMANDS":"基本用户命令","FAIL2BAN":"Fail2Ban 是一种入侵防御软件框架, 可以保护计算机和服务器免受暴力攻击的威胁.","FILEBROWSER":"File Browser 提供了一个指定目录中的文件管理界面, 可以用于上传, 删除,预览, 重命名以及编辑. 它允许你创建多个用户, 每个用户可以拥有自己的目录.","FILEBROWSEREE":"File Browser Enhanced 是一个基于 Docker 的增强版 File Browser, 由荒野无灯开发.","FIX_DPKG_TXT":"使用此命令解除软件安装 lock","FLEXGET":"FlexGet 是一款适用于所有媒体的多功能自动化工具. 它支持 torrents, nzbs, podcasts, comics, TV, movies, RSS, HTML, CSV, 等形式.","FLOOD":"Flood 是 rtorrent 的另一个 Web 界面. 它使用 Node.js 服务与 rTorrent API 交互, 存储数据, 并且提供 Web UI.","FREE":"空余","H5AI":"适用于 Apache httpd、lighttpd 和 nginx 的现代 HTTP Web 服务器索引.","HELP_COMMANDS":"帮助命令 & 更多","HOURS_L":"小时","INSTALL":"安装","INSTALLED":"已安装","INSTALLING":"安装中","ISSUE_REPORT_TXT":"报告问题","In":"下载量","In_AVG":"平均下行","JELLYFIN":"Jellyfin 是一套多媒体应用程序软件套装,旨在组织、管理和共享数字媒体文件,是Emby的一个自由开源分叉.","LANG_SELECT":"选择语言","LATEST_COMMIT":"最新","LECERT":"Let\'s Encrypt 是一个免费, 自动化的和开放的证书颁发机构 (CA), 由 ISRG (Internet Security Research Group) 运营.","Last 12 months":"过去12个月","Last 30 days":"过去30天","MAIN_MENU":"主菜单","MINUTES_L":"分","MOUNT_POINT":"挂载点","NAME":"名称","NETDATA":"Netdata 分布式的, 实时的适用于应用与系统的性能与健康情况的监视器.","NETWORK":"网络","NFS":"网络文件系统(NFS)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由Sun微系统开发,于1984年发布.","NOVNC":"noVNC 不仅是一个 VNC 客户端 JavaScript 库, 也是一个利用该库构建的应用程序. noVNC 可以在任何的现代浏览器包括移动浏览器 (iOS 与 Android) 中运行.","OPENVPN":"OpenVPN是一个用于创建虚拟私人网络加密通道的软件包,最早由James Yonan编写. OpenVPN允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证.","Out":"上传量","Out_AVG":"平均上行","PACKAGE_MANAGEMENT_CENTER":"组件管理中心","PANEL_CONFIG":"面板配置","PANEL_RESET":"重置面板","PERCENTAGE_TXT":"已使用 {{used}}% 的磁盘空间","PHYSICAL_MEMORY_IDLE_TXT":"空闲","PHYSICAL_MEMORY_TITLE":"物理内存使用情况","PHYSICAL_MEMORY_USED_TXT":"已使用","PLEX":"Plex 可让你将内容传输到任何支持 Plex 的设备.","PLUGINS":"插件","PLUGIN_MENU":"插件菜单","PMC_NOTICE_TXT":"注意! 这些选项与启用和禁用软件组件不同, 功能是安装或者卸载软件","PMENU_NOTICE_TXT":"只需点击插件名称即可简单安装和删除ruTorrent插件","QBITTORRENT":"qBittorrent 是一款免费可靠的 P2P BitTorrent 客户端, 先进的多平台 BitTorrent 客户端, 具有良好的 Qt 用户界面以及用于远程控制并且集成搜索引擎的 Web 用户界面.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker 是一款适用于 qBittorrent 的客户端屏蔽器, 默认屏蔽包括但不限于迅雷等客户端, 支持 qBittorrent 4.1 及以上版本.","QTORRENTS_TITLE":"qBittorrent的种子","QUICKBOX_COMMIT":"当前QuickBox的提交 - ","QUICK_SYSTEM_TIPS":"快速系统提示","RCLONE":"Rclone是一个开源、多线程、命令行界面的计算机程序, 可用于管理云存储。其功能包括档案同步、文件传输、加密、缓存和挂载。rclone支持包括Amazon S3和Google 云端硬盘在内等共五十多种云存储服务.","REAL_MEMORY_FREE_TXT":"实际内存空闲 {{free}}","REAL_MEMORY_TITLE":"实际内存使用情况","REAL_MEMORY_USAGE_TXT":"实际内存已使用 {{used}}","RECENT_UPDATES":"近期更新","REFRESH":"刷新","RESTART_SERVICES":"重启服务","RPLUGIN_MENU":"ruTorrent插件菜单","RTORRENT":"rTorrent为一款使用C++便携的纯文本环境BT客户端,基于Unix的ncurses和libTorrent(不要与libtorrent混淆)。开发者的目标是“一个侧重于高性能的良好代码。”.","RTORRENTS_TITLE":"rtorrent的种子","RUTORRENT":"ruTorrent 是一个受欢迎的 BitTorrent 客户端 rTorrent 的前端. 主要特性: 轻量级的服务端, 因此可以被安装在一些较老以及较地段的服务器上, 甚至可以安装在一些 SOHO 路由器上; 可扩展, 它拥有很多插件, 每个人都可以创建自己的插件; 带有 club-QuickBox 皮肤.","Recent hours":"最近几小时","SCREEN_RTORRNENT_TXT":"允许用户从SSH重新启动/重新挂载rtorrent","SECONDS_L":"秒","SEEDBOX_COMMANDS":"Seedbox 命令","SERVER_LOAD":"服务器负载","SERVICE_CONTROL_CENTER":"服务控制中心","SERVICE_STATUS":"系统状态","SET_LANG_TXT":"使用此命令设置仪表盘语言.","SIZE":"大小","SL_TXT":"服务器当前的平均负载","SPEEDTEST":"一个轻量化的开源网速测试页面","SWAP_IDLE_TXT":"空闲 {{free}}","SWAP_TITLE":"Swap使用情况","SWAP_TOTAL_TXT":"SWAP区域","SWAP_USED_TXT":"已使用 {{used}}","SWITCH_DEV":"切换到 development 分支","SWITCH_MASTER":"切换到 master 分支","SABNZBD":"免费和简单的二进制新闻阅读器","SYNCTHING":"开源的 BitTorrent 文件同步软件.","SYSTEM_RAM_STATUS":"系统内存状态","SYSTEM_RESPONSE_TITLE":"系统响应","SYS_UPGRADE_TXT":"使用此命令升级 QuickBox Lite 系统.","Summary":"概要","THEME_CHANGE_TXT":"即将改变主题. 如果主题在刷新后没有正确显示, 则可能需要清除浏览器缓存并重试.","THEME_SELECT":"选择主题","TORRENTS_LOADED":"总计加载了 {{loaded}} 个种子","TOTAL_L":"总计 {{total}}","TOTAL_RAM":"系统内存总计","TRANSMISSION":"Transmission 被设计为功能强大而易于使用的客户端. 它的默认设置即可直接运行, 只需要简单的点击就可以配置例如如监视目录,不良 peers 拦截列表和 Web 界面等高级功能. Ubuntu 以它作为默认的 BitTorrent 客户端, 其中最重要的理由就是它简单易学.","TROUBLESHOOT_TXT":"使用此命令生成日志以进行故障排查","TRTORRENTS_TITLE":"Transmission的种子","This day":"本天","This hour":"本小时","This month":"本月","Top 10 days":"最高10天","Total":"合计","UNINSTALLED":"已卸载","UNINSTALLING":"卸载中","UNINSTALLING_TITLE":"卸载","UNINSTALLING_TXT_1":"请稍候","UNINSTALLING_TXT_2":"正在从你的系统中卸载。","UNINSTALL_AUTODL_TXT":"即将从系统中卸载 AutoDL-iRSSi.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 AutoDL-iRSSi, 但是, 你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_BTSYNC_TXT":"即将从系统中卸载 BitTorrent Sync.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 BitTorrent Sync, 但是, 你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_CIFS_TXT":"即将从系统中卸载 Samba Server.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 Samba Server, 但是, 你的文件夹设置将被重置为默认值.","UNINSTALL_DELUGE_TXT":"即将从系统中卸载 Deluge.

这将彻底删除所有用户的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 Deluge, 但是, 你的存储路径和链接文件夹设置将被重置为默认值.","UNINSTALL_EMBY_TXT":"即将从系统中卸载 Emby Media Server.

这将完全删除你的所有配置和库设置...这个操作是不可逆的.

你可以随时重新安装 Emby, 但是, 你的磁带库设置将被重置为默认值.","UNINSTALL_FILEBROWSEREE_TXT":"即将从系统中卸载 File Browser Enhanced.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 File Browser, 但是你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_FILEBROWSER_TXT":"即将从系统中卸载 File Browser.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 File Browser, 但是你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_FLEXGET_TXT":"即将从系统中卸载 FlexGet.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 FlexGet, 但是你的设置将被重置为默认值.","UNINSTALL_FLOOD_TXT":"即将从系统中卸载 Flood.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 Flood, 但是你的设置将被重置为默认值.","UNINSTALL_JELLYFIN_TXT":"即将从系统中卸载 Jellyfin Media Server.

这将完全删除你的所有配置和库设置...这个操作是不可逆的.

你可以随时重新安装 Jellyfin, 但是, 你的磁带库设置将被重置为默认值.","UNINSTALL_NETDATA_TXT":"即将从系统中卸载 Netdata.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 Netdata, 但是你的设置将被重置为默认值.","UNINSTALL_NFS_TXT":"即将从系统中卸载 NFS Server.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 NFS Server, 但是, 你的文件夹设置将被重置为默认值.","UNINSTALL_NOVNC_TXT":"即将从系统中卸载 noVNC.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 noVNC, 但是你的设置将被重置为默认值.","UNINSTALL_OPENVPN_TXT":"即将从系统中卸载 OpenVPN.

这将完全删除你的所有配置...此操作是不可逆转的.

你可以随时重新安装 OpenVPN, 但是你的设置将被重置为默认值.","UNINSTALL_PLEX_TXT":"即将从系统中卸载 Plex Media Server.

这将完全删除你的所有配置和库设置...这个操作是不可逆的.

你可以随时重新安装 Plex, 但是, 你的磁带库设置将被重置为默认值.","UNINSTALL_QBITTORRENT_TXT":"即将从系统中卸载 qBittorrent.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 qBittorrent, 但是你的配置设置将被重置为默认值.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"即将从系统中卸载 qBittorrent-ClientBlocker.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 qBittorrent-ClientBlocker, 但是你的配置设置将被重置为默认值.","UNINSTALL_RCLONE_TXT":"即将从系统中卸载 Rclone.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 Rclone, 但是, 但是你的配置设置将被重置为默认值.","UNINSTALL_RTORRENT_TXT":"即将从系统中卸载 rTorrent.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 rTorrent, 但是你的配置设置将被重置为默认值.","UNINSTALL_RUTORRENT_TXT":"即将从系统中卸载 ruTorrent.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 ruTorrent, 但是你的配置设置将被重置为默认值.","UNINSTALL_SABNZBD_TXT":"即将从系统中卸载 SABnzbd.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 SABnzbd, 但是你的配置设置将被重置为默认值.","UNINSTALL_SPEEDTEST_TXT":"即将从系统中卸载 SpeedTest.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 SpeedTest, 但是你的配置设置将被重置为默认值.","UNINSTALL_SYNCTHING_TXT":"即将从系统中卸载 Syncthing.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 Syncthing, 但是你的配置设置将被重置为默认值.","UNINSTALL_TITLE":"卸载","UNINSTALL_TRANSMISSION_TXT":"即将从系统中卸载 Transmission.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 Transmission, 但是你的配置设置将被重置为默认值.","UNINSTALL_WEBDAV_TXT":"即将从系统中卸载 WebDAV.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 WebDAV, 但是, 但是你的配置设置将被重置为默认值.","UNINSTALL_X2GO_TXT":"即将从系统中卸载 x2go.

这将彻底清除系统中的 x2goserver 和 xfce4 桌面环境.","UNINSTALL_ZNC_TXT":"即将从系统中卸载 ZNC.

这将完全删除你的所有配置和设置...这个动作是不可逆的.

你可以随时重新安装 ZNC, 但是你的设置将被重置为默认值.","UPDATE":"运行更新程序","UPLOAD":"上传","UPTIME":"正常运行时间","USED":"已使用","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"查看额外的带宽详情","WEB_CONSOLE":"Web控制台","WEBDAV":"基于Web的分布式编写和版本控制 (WebDAV) 是超文本传输协议 (HTTP)的扩展, 有利于用户间协同编辑和管理存储在万维网服务器文档.","X2GO":"X2Go 是一款使用 NX 技术协议的 Linux 开源远程桌面软件.","YOUR_DISK_STATUS":"磁盘状态","ZNC":"ZNC 是一个 IRC 网络辅助软件. 它可以将客户端从实际的 IRC 服务器以及选定的频道中分离出来."}')}},t={};(function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={exports:{}};return e[i].call(a.exports,a,a.exports,r),a.exports})(8173)})(); \ No newline at end of file +(()=>{"use strict";var e={8680:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.username=void 0;const i=r(9896);class n{}n.EVENT_CONNECTION="connection",n.EVENT_DISCONNECT="disconnect",n.EVENT_MESSAGE="message",n.EVENT_EXEC="exec",n.EVENT_I18N="i18n",n.TEMPLATE_OPERATION="$operation$",n.TEMPLATE_TARGET="$target$",n.TEMPLATE_USERNAME="$username$",t.default=n,t.username=function(){let e="";try{const t="/srv/dashboard/db/master.txt";if((0,i.existsSync)(t)){e=(0,i.readFileSync)(t,{encoding:"utf8"}).split("\n")[0].trim()}else console.error("Quickbox-Lite user info not found")}catch(e){console.error("Failed to read Quickbox-Lite user info",e)}return e}()},9168:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&i(t,e,r);return n(t,e),t},s=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=r(5317),u=o(r(9896)),d=o(r(6928)),c=a(r(8680)),m=r(4894),T=r(8750);let b=__dirname,f="",g=3;for(;g-- >0;){const e=d.default.join(b,"config","commands.json");if(u.default.existsSync(e)){f=e;break}b=d.default.join(b,"..")}f||console.error("commonds.json not found for quickbox-ws");const p=new m.WatchedConfig(f),h={env:Object.assign({TERM:"xterm"},process.env),timeout:684e4,maxBuffer:5242880};t.default=(e,t)=>{e.on(c.default.EVENT_EXEC,(t=>((e,t)=>s(void 0,void 0,void 0,(function*(){const r={cmd:e,success:!0,message:"",stdout:"",stderr:""};let i;try{i=(0,T.buildCommand)(e,p,c.username)}catch(e){return r.success=!1,r.message="Invalid Command",e instanceof Error&&(r.message=e.message),void t.emit(c.default.EVENT_EXEC,r)}(0,l.exec)(i,h,((e,i,n)=>{r.stdout=i,r.stderr=n,e&&(r.success=!1,r.message="Execution Failed",e.killed&&"SIGTERM"===e.signal&&(r.message="Execution Timeout")),t.emit(c.default.EVENT_EXEC,r)}))})))(t,e))),t&&t()}},7397:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(r(8680)),a=i(r(612));t.default=(e,t)=>{e.on(n.default.EVENT_I18N,(t=>{console.log(`${e.id} set lang as ${t}`),a.default.locale=t})),t&&t()}},6411:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(r(8680));t.default=(e,t)=>{const r=e.handshake.headers["x-forwarded-for"]||e.handshake.address;console.log(`${e.id} connect from ${r}`),e.on(n.default.EVENT_DISCONNECT,(()=>{console.log(`${e.id} disconnect`)})),t&&t()}},6190:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=n(r(8938)),s=n(r(5692)),o=n(r(8680)),l=r(9378),u=r(7020),d=r(4589),c=r(5146),m=r(6272),T=r(7892),b=r(8019),f=a.default.create({baseURL:"http://127.0.0.1",timeout:5e3,httpsAgent:new s.default.Agent({rejectUnauthorized:!1})}),g=(0,T.getIfaceConfig)(),p=(e,t)=>i(void 0,void 0,void 0,(function*(){const r={key:e.key,pathName:e.url,success:!0,message:"",response:""};try{const t=(e=>{let t;t=e.toLowerCase().startsWith("http")?new URL(e):new URL(e,"http://localhost");const r=t.pathname,i={};return t.searchParams.forEach(((e,t)=>{i[t]=e})),{pathname:r,args:i}})(e.url);switch(t.pathname){case"/node/load.php":r.response=yield(0,l.widgetsLoad)();break;case"/node/net_status.php":r.response=yield(0,u.netStatus)();break;case"/node/up.php":r.response=(0,d.upTime)();break;case"/node/disk_data.php":r.response=yield(0,c.diskData)();break;case"/node/ram_stats.php":r.response=yield(0,m.ramStats)();break;case"/node/bw_tables.php":r.response=yield(0,b.bwTables)(g,t.args.page);break;default:r.response=(yield f.get(t.pathname,{params:t.args})).data}}catch(e){r.message=e instanceof Error?e.toString():"Unknown error",r.success=!1}finally{t.send(r)}}));t.default=(e,t)=>{e.on(o.default.EVENT_MESSAGE,(t=>p(t,e))),t&&t()}},8750:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getFiles=function(e){const t=[];if(!n.default.existsSync(e))return t;return n.default.readdirSync(e,{withFileTypes:!0}).filter((e=>e.isFile())).map((e=>e.name))},t.buildCommand=function(e,t,r){if(!e)throw new Error(`Invalid payload with type '${Object.prototype.toString.call(e)}'`);if(!t)throw new Error(`Invalid config with type '${Object.prototype.toString.call(t)}'`);let[i,n,o]=e.split(":");if(void 0===i||void 0===n||void 0===o)throw new Error(`Invalid payload '${e}'`);i=i.trim(),n=n.trim(),o=o.trim();const l=t instanceof s.WatchedConfig?t.Value[i]:t[i];if(void 0===l)throw new Error(`Command '${i}' not found`);let u=l.template;if(u.includes(a.default.TEMPLATE_OPERATION)){const e=l.operations.find((e=>e===n));if(void 0===e)throw new Error(`Operation '${n}' not found`);u=u.replace(a.default.TEMPLATE_OPERATION,e)}else if(""!==n)throw new Error(`Unexpected operation '${n}' is provided`);if(u.includes(a.default.TEMPLATE_TARGET)){const e=l.targets.find((e=>e===o||e===o+`@${a.default.TEMPLATE_USERNAME}`));if(void 0===e)throw new Error(`Target '${o}' not found`);u=u.replace(a.default.TEMPLATE_TARGET,e)}else if(""!==o)throw new Error(`Unexpected target '${o}' is provided`);if(u.includes(a.default.TEMPLATE_USERNAME)){if(!r)throw new Error(`Invalid username with type '${Object.prototype.toString.call(r)}'`);u=u.replace(a.default.TEMPLATE_USERNAME,r)}if(u.includes(a.default.TEMPLATE_OPERATION)||u.includes(a.default.TEMPLATE_TARGET)||u.includes(a.default.TEMPLATE_USERNAME))throw new Error(`Invalid template '${u}'`);return u};const n=i(r(9896)),a=i(r(8680)),s=r(4894)},612:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=r(7380),a=i(r(1699)),s=i(r(8127)),o=i(r(6247)),l=i(r(8880)),u=i(r(6964)),d=i(r(7893)),c=new n.I18n({da:a.default,de:s.default,en:o.default,es:l.default,fr:u.default,zh:d.default});t.default=c},1574:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.I18n=void 0;const n=r(7825),a=r(4567),s=r(6530),o=r(9469),l=r(2202),u={defaultLocale:"en",availableLocales:["en"],locale:"en",defaultSeparator:".",placeholder:/(?:\{\{|%\{)(.*?)(?:\}\}?)/gm,enableFallback:!1,missingBehavior:"message",missingTranslationPrefix:"",missingPlaceholder:(e,t)=>`[missing "${t}" value]`,nullPlaceholder:(e,t,r,i)=>e.missingPlaceholder(e,t,r,i),transformKey:e=>e};t.I18n=class{constructor(e={},t={}){this.onChangeHandlers=[],this.translations={},this.availableLocales=[],this.t=this.translate.bind(this),this.p=this.pluralize.bind(this),this.l=this.localize.bind(this),this.distanceOfTimeInWords=this.timeAgoInWords.bind(this),this._locale=u.locale,this._defaultLocale=u.defaultLocale,this._version=0;const{locale:r,enableFallback:i,missingBehavior:n,missingTranslationPrefix:d,missingPlaceholder:c,nullPlaceholder:m,defaultLocale:T,defaultSeparator:b,placeholder:f,transformKey:g}=Object.assign(Object.assign({},u),t);this.locale=r,this.defaultLocale=T,this.defaultSeparator=b,this.enableFallback=i,this.locale=r,this.missingBehavior=n,this.missingTranslationPrefix=d,this.missingPlaceholder=c,this.nullPlaceholder=m,this.placeholder=f,this.pluralization=new s.Pluralization(this),this.locales=new a.Locales(this),this.missingTranslation=new o.MissingTranslation(this),this.transformKey=g,this.interpolate=l.interpolate,this.store(e)}get version(){return this._version}get defaultLocale(){return this._defaultLocale||"en"}get locale(){return this._locale||this.defaultLocale||"en"}set locale(e){if("string"!=typeof e)throw new Error(`Expected newLocale to be a string; got ${(0,l.inferType)(e)}`);const t=this._locale!==e;this._locale=e,t&&this.hasChanged()}set defaultLocale(e){if("string"!=typeof e)throw new Error(`Expected newLocale to be a string; got ${(0,l.inferType)(e)}`);const t=this._defaultLocale!==e;this._defaultLocale=e,t&&this.hasChanged()}store(e){(0,n.merge)(this.translations,e),this.hasChanged()}translate(e,t){t=Object.assign({},t);let r;return(0,l.createTranslationOptions)(this,e,t).some((e=>((0,l.isSet)(e.scope)?r=(0,l.lookup)(this,e.scope,t):(0,l.isSet)(e.message)&&(r=e.message),null!=r)))?("string"==typeof r?r=this.interpolate(this,r,t):"object"==typeof r&&r&&(0,l.isSet)(t.count)&&(r=(0,l.pluralize)({i18n:this,count:t.count||0,scope:r,options:t,baseScope:(0,l.getFullScope)(this,e,t)})),t&&r instanceof Array&&(r=r.map((e=>"string"==typeof e?(0,l.interpolate)(this,e,t):e))),r):this.missingTranslation.get(e,t)}pluralize(e,t,r){return(0,l.pluralize)({i18n:this,count:e,scope:t,options:Object.assign({},r),baseScope:(0,l.getFullScope)(this,t,null!=r?r:{})})}localize(e,t,r){if(r=Object.assign({},r),null==t)return"";switch(e){case"currency":return this.numberToCurrency(t);case"number":return(0,l.formatNumber)(t,Object.assign({delimiter:",",precision:3,separator:".",significant:!1,stripInsignificantZeros:!1},(0,l.lookup)(this,"number.format")));case"percentage":return this.numberToPercentage(t);default:{let i;return i=e.match(/^(date|time)/)?this.toTime(e,t):t.toString(),(0,l.interpolate)(this,i,r)}}}toTime(e,t){const r=(0,l.parseDate)(t),i=(0,l.lookup)(this,e);return r.toString().match(/invalid/i)?r.toString():i?this.strftime(r,i):r.toString()}numberToCurrency(e,t={}){return(0,l.formatNumber)(e,Object.assign(Object.assign(Object.assign({delimiter:",",format:"%u%n",precision:2,separator:".",significant:!1,stripInsignificantZeros:!1,unit:"$"},(0,l.camelCaseKeys)(this.get("number.format"))),(0,l.camelCaseKeys)(this.get("number.currency.format"))),t))}numberToPercentage(e,t={}){return(0,l.formatNumber)(e,Object.assign(Object.assign(Object.assign({delimiter:"",format:"%n%",precision:3,stripInsignificantZeros:!1,separator:".",significant:!1},(0,l.camelCaseKeys)(this.get("number.format"))),(0,l.camelCaseKeys)(this.get("number.percentage.format"))),t))}numberToHumanSize(e,t={}){return(0,l.numberToHumanSize)(this,e,Object.assign(Object.assign(Object.assign({delimiter:"",precision:3,significant:!0,stripInsignificantZeros:!0,units:{billion:"Billion",million:"Million",quadrillion:"Quadrillion",thousand:"Thousand",trillion:"Trillion",unit:""}},(0,l.camelCaseKeys)(this.get("number.human.format"))),(0,l.camelCaseKeys)(this.get("number.human.storage_units"))),t))}numberToHuman(e,t={}){return(0,l.numberToHuman)(this,e,Object.assign(Object.assign(Object.assign({delimiter:"",separator:".",precision:3,significant:!0,stripInsignificantZeros:!0,format:"%n %u",roundMode:"default",units:{billion:"Billion",million:"Million",quadrillion:"Quadrillion",thousand:"Thousand",trillion:"Trillion",unit:""}},(0,l.camelCaseKeys)(this.get("number.human.format"))),(0,l.camelCaseKeys)(this.get("number.human.decimal_units"))),t))}numberToRounded(e,t){return(0,l.formatNumber)(e,Object.assign({unit:"",precision:3,significant:!1,separator:".",delimiter:"",stripInsignificantZeros:!1},t))}numberToDelimited(e,t={}){return(0,l.numberToDelimited)(e,Object.assign({delimiterPattern:/(\d)(?=(\d\d\d)+(?!\d))/g,delimiter:",",separator:"."},t))}withLocale(e,t){return i(this,void 0,void 0,(function*(){const r=this.locale;try{this.locale=e,yield t()}finally{this.locale=r}}))}strftime(e,t,r={}){return(0,l.strftime)(e,t,Object.assign(Object.assign(Object.assign({},(0,l.camelCaseKeys)((0,l.lookup)(this,"date"))),{meridian:{am:(0,l.lookup)(this,"time.am")||"AM",pm:(0,l.lookup)(this,"time.pm")||"PM"}}),r))}update(e,t,r={strict:!1}){if(r.strict&&!(0,n.has)(this.translations,e))throw new Error(`The path "${e}" is not currently defined`);const i=(0,n.get)(this.translations,e),a=(0,l.inferType)(i),s=(0,l.inferType)(t);if(r.strict&&a!==s)throw new Error(`The current type for "${e}" is "${a}", but you're trying to override it with "${s}"`);let o;o="object"===s?Object.assign(Object.assign({},i),t):t;const u=e.split(this.defaultSeparator),d=u.pop();let c=this.translations;for(const e of u)c[e]||(c[e]={}),c=c[e];c[d]=o,this.hasChanged()}toSentence(e,t={}){const{wordsConnector:r,twoWordsConnector:i,lastWordConnector:n}=Object.assign(Object.assign({wordsConnector:", ",twoWordsConnector:" and ",lastWordConnector:", and "},(0,l.camelCaseKeys)((0,l.lookup)(this,"support.array"))),t),a=e.length;switch(a){case 0:return"";case 1:return`${e[0]}`;case 2:return e.join(i);default:return[e.slice(0,a-1).join(r),n,e[a-1]].join("")}}timeAgoInWords(e,t,r={}){return(0,l.timeAgoInWords)(this,e,t,r)}onChange(e){return this.onChangeHandlers.push(e),()=>{this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(e),1)}}formatNumber(e,t){return(0,l.formatNumber)(e,t)}get(e){return(0,l.lookup)(this,e)}runCallbacks(){this.onChangeHandlers.forEach((e=>e(this)))}hasChanged(){this._version+=1,this.runCallbacks()}}},4567:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Locales=t.defaultLocaleResolver=void 0;const i=r(7825);t.defaultLocaleResolver=(e,t)=>{const r=[],n=[];return r.push(t),t||r.push(e.locale),e.enableFallback&&r.push(e.defaultLocale),r.filter(Boolean).map((e=>e.toString())).forEach((function(t){if(n.includes(t)||n.push(t),!e.enableFallback)return;const r=t.split("-");3===r.length&&n.push(`${r[0]}-${r[1]}`),n.push(r[0])})),(0,i.uniq)(n)};t.Locales=class{constructor(e){this.i18n=e,this.registry={},this.register("default",t.defaultLocaleResolver)}register(e,t){if("function"!=typeof t){const e=t;t=()=>e}this.registry[e]=t}get(e){let t=this.registry[e]||this.registry[this.i18n.locale]||this.registry.default;return"function"==typeof t&&(t=t(this.i18n,e)),t instanceof Array||(t=[t]),t}}},9469:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MissingTranslation=t.errorStrategy=t.messageStrategy=t.guessStrategy=void 0;const i=r(2202);t.guessStrategy=function(e,t){t instanceof Array&&(t=t.join(e.defaultSeparator));const r=t.split(e.defaultSeparator).slice(-1)[0];return e.missingTranslationPrefix+r.replace("_"," ").replace(/([a-z])([A-Z])/g,((e,t,r)=>`${t} ${r.toLowerCase()}`))};t.messageStrategy=(e,t,r)=>{const n=(0,i.getFullScope)(e,t,r),a="locale"in r?r.locale:e.locale,s=(0,i.inferType)(a);return`[missing "${["string"===s?a:s,n].join(e.defaultSeparator)}" translation]`};t.errorStrategy=(e,t,r)=>{const n=(0,i.getFullScope)(e,t,r),a=[e.locale,n].join(e.defaultSeparator);throw new Error(`Missing translation: ${a}`)};t.MissingTranslation=class{constructor(e){this.i18n=e,this.registry={},this.register("guess",t.guessStrategy),this.register("message",t.messageStrategy),this.register("error",t.errorStrategy)}register(e,t){this.registry[e]=t}get(e,t){var r;return this.registry[null!==(r=t.missingBehavior)&&void 0!==r?r:this.i18n.missingBehavior](this.i18n,e,t)}}},6530:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Pluralization=t.defaultPluralizer=void 0,t.useMakePlural=n;const i=r(9551);function n({pluralizer:e,includeZero:t=!0,ordinal:r=!1}){return function(i,n){return[t&&0===n?"zero":"",e(n,r)].filter(Boolean)}}t.defaultPluralizer=n({pluralizer:i.en,includeZero:!0});t.Pluralization=class{constructor(e){this.i18n=e,this.registry={},this.register("default",t.defaultPluralizer)}register(e,t){this.registry[e]=t}get(e){return this.registry[e]||this.registry[this.i18n.locale]||this.registry.default}}},1472:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.camelCaseKeys=function(e){if(!e)return{};return Object.keys(e).reduce(((t,r)=>(t[(0,i.camelCase)(r)]=e[r],t)),{})};const i=r(7825)},251:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTranslationOptions=function(e,t,r){let n=[{scope:t}];(0,i.isSet)(r.defaults)&&(n=n.concat(r.defaults));if((0,i.isSet)(r.defaultValue)){const i="function"==typeof r.defaultValue?r.defaultValue(e,t,r):r.defaultValue;n.push({message:i}),delete r.defaultValue}return n};const i=r(7986)},4817:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.expandRoundMode=function(e){var t;return null!==(t=a[e])&&void 0!==t?t:a.default};const n=i(r(2860));var a;!function(e){e[e.up=n.default.ROUND_UP]="up",e[e.down=n.default.ROUND_DOWN]="down",e[e.truncate=n.default.ROUND_DOWN]="truncate",e[e.halfUp=n.default.ROUND_HALF_UP]="halfUp",e[e.default=n.default.ROUND_HALF_UP]="default",e[e.halfDown=n.default.ROUND_HALF_DOWN]="halfDown",e[e.halfEven=n.default.ROUND_HALF_EVEN]="halfEven",e[e.banker=n.default.ROUND_HALF_EVEN]="banker",e[e.ceiling=n.default.ROUND_CEIL]="ceiling",e[e.ceil=n.default.ROUND_CEIL]="ceil",e[e.floor=n.default.ROUND_FLOOR]="floor"}(a||(a={}))},494:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.formatNumber=function(e,t){var r,i,o;const l=new n.default(e);if(t.raise&&!l.isFinite())throw new Error(`"${e}" is not a valid numeric value`);const u=(0,s.roundNumber)(l,t),d=new n.default(u),c=d.lt(0),m=d.isZero();let[T,b]=u.split(".");const f=[];let g;const p=null!==(r=t.format)&&void 0!==r?r:"%n",h=null!==(i=t.negativeFormat)&&void 0!==i?i:`-${p}`,E=c&&!m?h:p;T=T.replace("-","");for(;T.length>0;)f.unshift(T.substr(Math.max(0,T.length-3),3)),T=T.substr(0,T.length-3);T=f.join(""),g=f.join(t.delimiter),b=t.significant?function({significand:e,whole:t,precision:r}){if("0"===t||null===r)return e;const i=Math.max(0,r-t.length);return(null!=e?e:"").substr(0,i)}({whole:T,significand:b,precision:t.precision}):null!=b?b:(0,a.repeat)("0",null!==(o=t.precision)&&void 0!==o?o:0);t.stripInsignificantZeros&&b&&(b=b.replace(/0+$/,""));l.isNaN()&&(g=e.toString());b&&l.isFinite()&&(g+=(t.separator||".")+b);return function(e,{formattedNumber:t,unit:r}){return e.replace("%n",t).replace("%u",r)}(E,{formattedNumber:g,unit:t.unit})};const n=i(r(2860)),a=r(7825),s=r(283)},327:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFullScope=function(e,t,r){let i="";(t instanceof String||"string"==typeof t)&&(i=t);t instanceof Array&&(i=t.join(e.defaultSeparator));r.scope&&(i=[r.scope,i].join(e.defaultSeparator));return i}},2202:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.timeAgoInWords=t.strftime=t.roundNumber=t.pluralize=t.parseDate=t.numberToHumanSize=t.numberToHuman=t.numberToDelimited=t.lookup=t.isSet=t.interpolate=t.inferType=t.getFullScope=t.formatNumber=t.expandRoundMode=t.createTranslationOptions=t.camelCaseKeys=void 0;var i=r(1472);Object.defineProperty(t,"camelCaseKeys",{enumerable:!0,get:function(){return i.camelCaseKeys}});var n=r(251);Object.defineProperty(t,"createTranslationOptions",{enumerable:!0,get:function(){return n.createTranslationOptions}});var a=r(4817);Object.defineProperty(t,"expandRoundMode",{enumerable:!0,get:function(){return a.expandRoundMode}});var s=r(494);Object.defineProperty(t,"formatNumber",{enumerable:!0,get:function(){return s.formatNumber}});var o=r(327);Object.defineProperty(t,"getFullScope",{enumerable:!0,get:function(){return o.getFullScope}});var l=r(1590);Object.defineProperty(t,"inferType",{enumerable:!0,get:function(){return l.inferType}});var u=r(5433);Object.defineProperty(t,"interpolate",{enumerable:!0,get:function(){return u.interpolate}});var d=r(7986);Object.defineProperty(t,"isSet",{enumerable:!0,get:function(){return d.isSet}});var c=r(3562);Object.defineProperty(t,"lookup",{enumerable:!0,get:function(){return c.lookup}});var m=r(1141);Object.defineProperty(t,"numberToDelimited",{enumerable:!0,get:function(){return m.numberToDelimited}});var T=r(3119);Object.defineProperty(t,"numberToHuman",{enumerable:!0,get:function(){return T.numberToHuman}});var b=r(5726);Object.defineProperty(t,"numberToHumanSize",{enumerable:!0,get:function(){return b.numberToHumanSize}});var f=r(993);Object.defineProperty(t,"parseDate",{enumerable:!0,get:function(){return f.parseDate}});var g=r(4214);Object.defineProperty(t,"pluralize",{enumerable:!0,get:function(){return g.pluralize}});var p=r(283);Object.defineProperty(t,"roundNumber",{enumerable:!0,get:function(){return p.roundNumber}});var h=r(5250);Object.defineProperty(t,"strftime",{enumerable:!0,get:function(){return h.strftime}});var E=r(6186);Object.defineProperty(t,"timeAgoInWords",{enumerable:!0,get:function(){return E.timeAgoInWords}})},1590:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.inferType=function(e){var t,r;if(null===e)return"null";const i=typeof e;if("object"!==i)return i;return(null===(r=null===(t=null==e?void 0:e.constructor)||void 0===t?void 0:t.name)||void 0===r?void 0:r.toLowerCase())||"object"}},5433:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.interpolate=function(e,t,r){r=Object.keys(r).reduce(((t,i)=>(t[e.transformKey(i)]=r[i],t)),{});const n=t.match(e.placeholder);if(!n)return t;for(;n.length;){let a;const s=n.shift(),o=s.replace(e.placeholder,"$1");a=(0,i.isSet)(r[o])?r[o].toString().replace(/\$/gm,"_#$#_"):o in r?e.nullPlaceholder(e,s,t,r):e.missingPlaceholder(e,s,t,r);const l=new RegExp(s.replace(/\{/gm,"\\{").replace(/\}/gm,"\\}"));t=t.replace(l,a)}return t.replace(/_#\$#_/g,"$")};const i=r(7986)},7986:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isSet=function(e){return null!=e}},3562:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.lookup=function(e,t,r={}){const s="locale"in(r=Object.assign({},r))?r.locale:e.locale,o=(0,a.inferType)(s),l=e.locales.get("string"===o?s:typeof s).slice(),u=(0,n.getFullScope)(e,t,r).split(e.defaultSeparator).map((t=>e.transformKey(t))),d=l.map((t=>u.reduce(((e,t)=>e&&e[t]),e.translations[t])));return d.push(r.defaultValue),d.find((e=>(0,i.isSet)(e)))};const i=r(7986),n=r(327),a=r(1590)},1141:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numberToDelimited=function(e,t){const r=new n.default(e);if(!r.isFinite())return e.toString();if(!t.delimiterPattern.global)throw new Error(`options.delimiterPattern must be a global regular expression; received ${t.delimiterPattern}`);let[i,a]=r.toString().split(".");return i=i.replace(t.delimiterPattern,(e=>`${e}${t.delimiter}`)),[i,a].filter(Boolean).join(t.separator)};const n=i(r(2860))},3119:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numberToHuman=function(e,t,r){const i={roundMode:r.roundMode,precision:r.precision,significant:r.significant};let m;if("string"===(0,u.inferType)(r.units)){const t=r.units;if(m=(0,o.lookup)(e,t),!m)throw new Error(`The scope "${e.locale}${e.defaultSeparator}${(0,s.getFullScope)(e,t,{})}" couldn't be found`)}else m=r.units;let T=(0,l.roundNumber)(new n.default(t),i);const b=((e,t)=>{const r=e.isZero()?0:Math.floor(Math.log10(e.abs().toNumber()));return(e=>(0,a.sortBy)(Object.keys(e).map((e=>c[e])),(e=>-1*e)))(t).find((e=>r>=e))||0})(new n.default(T),m),f=((e,t)=>e[d[t.toString()]]||"")(m,b);if(T=(0,l.roundNumber)(new n.default(T).div(Math.pow(10,b)),i),r.stripInsignificantZeros){let[e,t]=T.split(".");t=(t||"").replace(/0+$/,""),T=e,t&&(T+=`${r.separator}${t}`)}return r.format.replace("%n",T||"0").replace("%u",f).trim()};const n=i(r(2860)),a=r(7825),s=r(327),o=r(3562),l=r(283),u=r(1590),d={0:"unit",1:"ten",2:"hundred",3:"thousand",6:"million",9:"billion",12:"trillion",15:"quadrillion","-1":"deci","-2":"centi","-3":"mili","-6":"micro","-9":"nano","-12":"pico","-15":"femto"},c=(0,a.zipObject)(Object.values(d),Object.keys(d).map((e=>parseInt(e,10))))},5726:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numberToHumanSize=function(e,t,r){const i=(0,s.expandRoundMode)(r.roundMode),l=1024,u=new n.default(t).abs(),d=u.lt(l);let c;const m=((e,t)=>{const r=t.length-1,i=new n.default(Math.log(e.toNumber())).div(Math.log(l)).integerValue(n.default.ROUND_DOWN).toNumber();return Math.min(r,i)})(u,o);c=d?u.integerValue():new n.default((0,a.roundNumber)(u.div(Math.pow(l,m)),{significant:r.significant,precision:r.precision,roundMode:r.roundMode}));const T=e.translate("number.human.storage_units.format",{defaultValue:"%n %u"}),b=e.translate((f=o,`number.human.storage_units.units.${d?"byte":f[m]}`),{count:u.integerValue().toNumber()});var f;let g=c.toFixed(r.precision,i);r.stripInsignificantZeros&&(g=g.replace(/(\..*?)0+$/,"$1").replace(/\.$/,""));return T.replace("%n",g).replace("%u",b)};const n=i(r(2860)),a=r(283),s=r(4817),o=["byte","kb","mb","gb","tb","pb","eb"]},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseDate=function(e){if(e instanceof Date)return e;if("number"==typeof e){const t=new Date;return t.setTime(e),t}const t=e.match(/(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:[.,](\d{1,3}))?)?(Z|\+00:?00)?/);if(t){const e=t.slice(1,8).map((e=>parseInt(e,10)||0));e[1]-=1;const[r,i,n,a,s,o,l]=e;return t[8]?new Date(Date.UTC(r,i,n,a,s,o,l)):new Date(r,i,n,a,s,o,l)}if(e.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\d+) (\d+:\d+:\d+) ([+-]\d+) (\d+)/)){const e=new Date;return e.setTime(Date.parse([RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$6,RegExp.$4,RegExp.$5].join(" "))),e}const r=new Date;return r.setTime(Date.parse(e)),r}},4214:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.pluralize=function({i18n:e,count:t,scope:r,options:a,baseScope:s}){let o,l;a=Object.assign({},a),o="object"==typeof r&&r?r:(0,n.lookup)(e,r,a);if(!o)return e.missingTranslation.get(r,a);const u=e.pluralization.get(a.locale)(e,t),d=[];for(;u.length;){const e=u.shift();if((0,i.isSet)(o[e])){l=o[e];break}d.push(e)}if(!(0,i.isSet)(l))return e.missingTranslation.get(s.split(e.defaultSeparator).concat([d[0]]),a);return a.count=t,e.interpolate(e,l,a)};const i=r(7986),n=r(3562)},283:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.roundNumber=function(e,t){const r=function(e,{precision:t,significant:r}){if(r&&null!==t&&t>0)return t-function(e){if(e.isZero())return 1;return Math.floor(Math.log10(e.abs().toNumber())+1)}(e);return t}(e,t);if(null===r)return e.toString();const i=(0,a.expandRoundMode)(t.roundMode);if(r>=0)return e.toFixed(r,i);const s=Math.pow(10,Math.abs(r));return(e=new n.default(e.div(s).toFixed(0,i)).times(s)).toString()};const n=i(r(2860)),a=r(4817)},5250:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.strftime=function(e,t,i={}){const{abbrDayNames:n,dayNames:a,abbrMonthNames:s,monthNames:o,meridian:l}=Object.assign(Object.assign({},r),i);if(isNaN(e.getTime()))throw new Error("strftime() requires a valid date object, but received an invalid date.");const u=e.getDay(),d=e.getDate(),c=e.getFullYear(),m=e.getMonth()+1,T=e.getHours();let b=T;const f=T>11?"pm":"am",g=e.getSeconds(),p=e.getMinutes(),h=e.getTimezoneOffset(),E=Math.floor(Math.abs(h/60)),S=Math.abs(h)-60*E,_=(h>0?"-":"+")+(E.toString().length<2?"0"+E:E)+(S.toString().length<2?"0"+S:S);b>12?b-=12:0===b&&(b=12);return t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%a",n[u])).replace("%A",a[u])).replace("%b",s[m])).replace("%B",o[m])).replace("%d",d.toString().padStart(2,"0"))).replace("%e",d.toString())).replace("%-d",d.toString())).replace("%H",T.toString().padStart(2,"0"))).replace("%-H",T.toString())).replace("%k",T.toString())).replace("%I",b.toString().padStart(2,"0"))).replace("%-I",b.toString())).replace("%l",b.toString())).replace("%m",m.toString().padStart(2,"0"))).replace("%-m",m.toString())).replace("%M",p.toString().padStart(2,"0"))).replace("%-M",p.toString())).replace("%p",l[f])).replace("%P",l[f].toLowerCase())).replace("%S",g.toString().padStart(2,"0"))).replace("%-S",g.toString())).replace("%w",u.toString())).replace("%y",c.toString().padStart(2,"0").substr(-2))).replace("%-y",c.toString().padStart(2,"0").substr(-2).replace(/^0+/,""))).replace("%Y",c.toString())).replace(/%z/i,_)};const r={meridian:{am:"AM",pm:"PM"},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbrDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],monthNames:[null,"January","February","March","April","May","June","July","August","September","October","November","December"],abbrMonthNames:[null,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}},6186:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.timeAgoInWords=function(e,t,r,s={}){const o=s.scope||"datetime.distance_in_words",l=(t,r=0)=>e.t(t,{count:r,scope:o});t=(0,n.parseDate)(t),r=(0,n.parseDate)(r);let u=t.getTime()/1e3,d=r.getTime()/1e3;u>d&&([t,r,u,d]=[r,t,d,u]);const c=Math.round(d-u),m=Math.round((d-u)/60),T=m/60/24,b=Math.round(m/60),f=Math.round(T),g=Math.round(f/30);if(a(0,1,m))return s.includeSeconds?a(0,4,c)?l("less_than_x_seconds",5):a(5,9,c)?l("less_than_x_seconds",10):a(10,19,c)?l("less_than_x_seconds",20):a(20,39,c)?l("half_a_minute"):a(40,59,c)?l("less_than_x_minutes",1):l("x_minutes",1):0===m?l("less_than_x_minutes",1):l("x_minutes",m);if(a(2,44,m))return l("x_minutes",m);if(a(45,89,m))return l("about_x_hours",1);if(a(90,1439,m))return l("about_x_hours",b);if(a(1440,2519,m))return l("x_days",1);if(a(2520,43199,m))return l("x_days",f);if(a(43200,86399,m))return l("about_x_months",Math.round(m/43200));if(a(86400,525599,m))return l("x_months",g);let p=t.getFullYear();t.getMonth()+1>=3&&(p+=1);let h=r.getFullYear();r.getMonth()+1<3&&(h-=1);const E=p>h?0:(0,i.range)(p,h).filter((e=>1===new Date(e,1,29).getMonth())).length,S=525600,_=m-1440*E,N=Math.trunc(_/S),y=parseFloat((_/S-N).toPrecision(3));if(y<.25)return l("about_x_years",N);if(y<.75)return l("over_x_years",N);return l("almost_x_years",N+1)};const i=r(7825),n=r(993),a=(e,t,r)=>r>=e&&r<=t},7380:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.MissingTranslation=t.Locales=t.I18n=void 0;var a=r(1574);Object.defineProperty(t,"I18n",{enumerable:!0,get:function(){return a.I18n}});var s=r(4567);Object.defineProperty(t,"Locales",{enumerable:!0,get:function(){return s.Locales}});var o=r(9469);Object.defineProperty(t,"MissingTranslation",{enumerable:!0,get:function(){return o.MissingTranslation}}),n(r(8921),t)},8921:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},8173:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(r(7252)),a=i(r(8611)),s=r(4437),o=i(r(5086)),l=i(r(2015)),u=i(r(4468)),d=i(r(6411)),c=i(r(6190)),m=i(r(9168)),T=i(r(7397)),b=i(r(612)),f=(0,n.default)();f.set("trust proxy",!0);const g=a.default.createServer(f),p=new s.Server(g,{wsEngine:o.default.Server});p.use(d.default),p.use(c.default),p.use(m.default),p.use(T.default),f.get("/",((e,t)=>{t.send(u.default.renderToString(l.default.createElement("html",null,l.default.createElement("head",null,l.default.createElement("title",null,"QuickBox Websocket")),l.default.createElement("body",null,l.default.createElement("pre",null,"Request from ",e.ip)))))})),f.get("/set",((e,t)=>{const r=e.query.lang;b.default.locale="string"==typeof r?r:"en",t.send(b.default.locale)})),g.listen(8575,"127.0.0.1",(()=>{console.log("Quickbox-ws running...")}))},292:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.processExists=function(e,t){return i(this,void 0,void 0,(function*(){return-1!==(yield a.default.processes()).list.findIndex((r=>r.name===e&&r.user===t))}))},t.formatSize=function(e){const t=isNaN(e)?0:e,r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],i=Math.min(Math.max(Math.floor(Math.log2(t)/10),0),r.length-1);return(t/Math.pow(2,10*i)).toFixed(i>0?2:0).toString()+" "+r[i]},t.formatSpeed=function(e,t=3,r=0){if(e<1e-5)return"0 bps";const i=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,i)).toFixed(t)+" "+["bps","Kbps","Mbps","Gbps","Tbps","Pbps","Ebps","Zbps","Ybps"][i+r]};const a=n(r(333))},7892:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getVnstatData=function(e){return i(this,void 0,void 0,(function*(){var t,r,i,n,l,u,d;const c={hour:[],day:[],month:[],top:[],summary:{totalrx:0,totaltx:0,interface:"",created:0}},m="/usr/bin/vnstat";let T={vnstatversion:"",jsonversion:"",interfaces:[]};if(a.default.existsSync(m))T=JSON.parse(yield(b=`${m} --json -i ${e}`,new Promise(((e,t)=>{(0,s.exec)(b,((r,i,n)=>{r&&t(r),e(i||n)}))}))));else{const t=`./dumps/vnstat_dump_${e}`;if(a.default.existsSync(t)){const e=a.default.readFileSync(t,"utf8");T=JSON.parse(e)}}var b;const f=T.jsonversion,g="1"===f?1024:1;let p=T.interfaces.findIndex((t=>t.name===e));-1===p&&(p=0);const h=T.interfaces[p],E=h.traffic,S="1"===f?E.hours:E.hour,_=h.updated.date,N=null!==(t=null==S?void 0:S.filter((e=>e.date.year===_.year&&e.date.month===_.month&&e.date.day===_.day)))&&void 0!==t?t:[];for(let e=0;e{var t,r;return 1e4*e.date.year+100*(null!==(t=e.date.month)&&void 0!==t?t:0)+(null!==(r=e.date.day)&&void 0!==r?r:0)})),L=null!==(n=null==y?void 0:y.length)&&void 0!==n?n:0;for(let e=L-Math.min(30,L);e{Object.defineProperty(t,"__esModule",{value:!0}),t.WatchedConfig=void 0;const i=r(9896);t.WatchedConfig=class{constructor(e,t="utf-8"){this.path=e,this.encoding=t,this.timestamp=new Date,this.config={},this.loadConfig(),this.watch()}get Value(){return this.config}loadConfig(){this.config=JSON.parse((0,i.readFileSync)(this.path).toString(this.encoding))}watch(){(0,i.watchFile)(this.path,((e,t)=>{e.mtime>t.mtime&&(this.timestamp=e.mtime,this.loadConfig(),console.log(`Config reloaded at ${new Date}`))}))}}},8019:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bwTables=function(e,t){return i(this,void 0,void 0,(function*(){const r=yield(0,l.getVnstatData)(e);return s.default.renderToString(a.default.createElement("div",{className:"col-sm-12",style:{paddingLeft:0,paddingRight:0}},a.default.createElement("div",{className:"table-responsive"},function(e){const t=e.summary.totalrx,r=e.summary.totaltx,i=Math.floor(Date.now()/1e3)-e.summary.created,n=8*Math.round(t/i),a=8*Math.round(r/i),s=[];e.hour.length>0&&e.day.length>0&&e.month.length>0&&(s.push({time:NaN,label:o.default.t("This hour"),rx:e.hour[e.hour.length-1].rx,tx:e.hour[e.hour.length-1].tx,rx_avg:e.hour[e.hour.length-1].rx_avg,tx_avg:e.hour[e.hour.length-1].tx_avg}),s.push({time:NaN,label:o.default.t("This day"),rx:e.day[e.day.length-1].rx,tx:e.day[e.day.length-1].tx,rx_avg:e.day[e.day.length-1].rx_avg,tx_avg:e.day[e.day.length-1].tx_avg}),s.push({time:NaN,label:o.default.t("This month"),rx:e.month[e.month.length-1].rx,tx:e.month[e.month.length-1].tx,rx_avg:e.month[e.month.length-1].rx_avg,tx_avg:e.month[e.month.length-1].tx_avg}),s.push({time:NaN,label:o.default.t("All time"),rx:t,tx:r,rx_avg:n,tx_avg:a}));return d(o.default.t("Summary"),s)}(r)),a.default.createElement("div",{className:"col-sm-12",style:{paddingLeft:0,paddingRight:0}},a.default.createElement("div",{className:"table-responsive"},void 0===t||"h"===t?d(o.default.t("Recent hours"),r.hour):"d"===t?d(o.default.t("Last 30 days"),r.day):"m"===t?d(o.default.t("Last 12 months"),r.month):"t"===t?d(o.default.t("Top 10 days"),r.top):null))))}))};const a=n(r(2015)),s=n(r(4468)),o=n(r(612)),l=r(7892),u=r(292);function d(e,t){const r=e=>e%2==1?"odd":"even";return a.default.createElement("table",{className:"table table-hover table-default nomargin",width:"100%",cellSpacing:"0"},a.default.createElement("thead",null,a.default.createElement("tr",null,a.default.createElement("th",{className:"text-right",style:{width:"20%"}},e),a.default.createElement("th",{className:"text-right",style:{width:"15%"}},o.default.t("Out")),a.default.createElement("th",{className:"text-left",style:{width:"15%"}},o.default.t("In")),a.default.createElement("th",{className:"text-right",style:{width:"15%"}},o.default.t("Out_AVG")),a.default.createElement("th",{className:"text-left",style:{width:"15%"}},o.default.t("In_AVG")),a.default.createElement("th",{className:"text-left",style:{width:"18%"}},o.default.t("Total")))),a.default.createElement("tbody",null,t.map(((e,t)=>a.default.createElement("tr",{key:t},a.default.createElement("td",{className:`label_${r(t)}`,style:{fontSize:"12px",textAlign:"right"}},a.default.createElement("b",null,e.label)),a.default.createElement("td",{className:`numeric_${r(t)} text-success`,style:{fontSize:"12px",textAlign:"right"}},(0,u.formatSize)(e.tx)),a.default.createElement("td",{className:`numeric_${r(t)} text-primary`,style:{fontSize:"12px",textAlign:"left"}},(0,u.formatSize)(e.rx)),a.default.createElement("td",{className:`numeric_${r(t)} text-success`,style:{fontSize:"12px",textAlign:"right"}},(0,u.formatSpeed)(e.tx_avg)),a.default.createElement("td",{className:`numeric_${r(t)} text-primary`,style:{fontSize:"12px",textAlign:"left"}},(0,u.formatSpeed)(e.rx_avg)),a.default.createElement("td",{className:`numeric_${r(t)}`,style:{fontSize:"12px",textAlign:"left"}},(0,u.formatSize)(e.rx+e.tx)))))))}},5146:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.diskData=function(){return i(this,void 0,void 0,(function*(){const e=yield a.default.fsSize();return o.default.renderToString(s.default.createElement("div",null,e.filter((e=>e.size>1<<30&&!e.mount.startsWith("/var/lib/docker/overlay"))).map(f),yield function(){return i(this,void 0,void 0,(function*(){const e=(e,t)=>s.default.createElement("div",null,s.default.createElement("h4",null,c.default.t(e)),s.default.createElement("p",{className:"nomargin",dangerouslySetInnerHTML:{__html:c.default.t("TORRENTS_LOADED",{loaded:t})}})),t=[];if((yield(0,m.processExists)("rtorrent",d.username))&&(yield b("/install/.rtorrent.lock"))){const r=yield T(`/home/${d.username}/.sessions/`);t.push(e("RTORRENTS_TITLE",r))}if((yield(0,m.processExists)("deluge-web",d.username))&&(yield b("/install/.deluge.lock"))){const r=yield T(`/home/${d.username}/.config/deluge/state/`);t.push(e("DTORRENTS_TITLE",r))}if((yield(0,m.processExists)("transmission-daemon",d.username))&&(yield b("/install/.transmission.lock"))){const r=yield T(`/home/${d.username}/.config/transmission/torrents/`);t.push(e("TRTORRENTS_TITLE",r))}if((yield(0,m.processExists)("qbittorrent-nox",d.username))&&(yield b("/install/.qbittorrent.lock"))){const r=(0,l.existsSync)(`/home/${d.username}/.local/share/data/qBittorrent`)?`/home/${d.username}/.local/share/data/qBittorrent/BT_backup`:`/home/${d.username}/.local/share/qBittorrent/BT_backup`,i=yield T(r);t.push(e("QTORRENTS_TITLE",i))}return s.default.createElement("div",null,t)}))}()))}))};const a=n(r(333)),s=n(r(2015)),o=n(r(4468)),l=r(9896),u=n(r(1943)),d=r(8680),c=n(r(612)),m=r(292);function T(e){return i(this,void 0,void 0,(function*(){try{return(yield u.default.readdir(e)).filter((e=>e.endsWith(".torrent"))).length}catch(e){return console.error("Failed to count torrent",e),0}}))}function b(e){return i(this,void 0,void 0,(function*(){try{return yield u.default.access(e,u.default.constants.F_OK),!0}catch(e){return!1}}))}function f(e){const t=(r=e.use)>=90?"progress-bar-danger":r>=70?"progress-bar-warning":"progress-bar-success";var r;const i=function(e){return e>=90?"disk-danger":e>=70?"disk-warning":"disk-good"}(e.use);return s.default.createElement("div",{key:e.mount},s.default.createElement("div",{className:"row"},s.default.createElement("div",{className:"col-sm-8"},s.default.createElement("h4",null,c.default.t("MOUNT_POINT")),s.default.createElement("p",{style:{color:"#eb4549",fontWeight:"normal",fontSize:"14px"}},e.mount),s.default.createElement("h4",null,c.default.t("DISK_SPACE")),s.default.createElement("p",{className:"nomargin",style:{fontSize:"14px"}},c.default.t("FREE"),": ",(0,m.formatSize)(e.available)," 丨 ",c.default.t("USED"),": ",(0,m.formatSize)(e.used)," 丨 ",c.default.t("SIZE"),": ",(0,m.formatSize)(e.size)),s.default.createElement("br",null),s.default.createElement("div",{className:"progress"},s.default.createElement("div",{style:{width:`${e.use}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":e.use,role:"progressbar",className:`progress-bar ${t}`},s.default.createElement("span",{className:"sr-only"},e.use,"% ",c.default.t("USED")))),s.default.createElement("p",{style:{fontSize:"10px"}},c.default.t("PERCENTAGE_TXT",{used:e.use}))),s.default.createElement("div",{className:"col-sm-4 text-right"},s.default.createElement("i",{className:`fa fa-hdd-o ${i}`,style:{fontSize:"90px"}}))),s.default.createElement("hr",null))}},9378:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.widgetsLoad=void 0;const a=n(r(857)),s=n(r(333));t.widgetsLoad=()=>i(void 0,void 0,void 0,(function*(){const e=a.default.loadavg(),t=yield s.default.processes();return`${e.map((e=>e.toFixed(2))).join(" ")} ${t.all}`}))},7020:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.netStatus=void 0;const a=n(r(333));t.netStatus=()=>i(void 0,void 0,void 0,(function*(){const e=yield function(){return i(this,void 0,void 0,(function*(){const e=yield a.default.networkInterfaces();return Array.isArray(e)?e.filter((e=>"up"===e.operstate)).map((e=>e.iface)):[e.iface]}))}(),t={};for(const r of e){const e=yield a.default.networkStats(r);e.length>0&&(t[r]={rx_bytes:e[0].rx_bytes,tx_bytes:e[0].tx_bytes})}return{net:t,ts:Date.now()/1e3}}))},6272:function(e,t,r){var i=this&&this.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,a){function s(e){try{l(i.next(e))}catch(e){a(e)}}function o(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,o)}l((i=i.apply(e,t||[])).next())}))},n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ramStats=function(){return i(this,void 0,void 0,(function*(){const e=yield a.default.mem(),t=[],r=(0,d.formatSize)(e.used),i=(0,d.formatSize)(e.free),n=(0,d.formatSize)(e.total),m=(0,l.toNumber)((e.used/e.total*100).toFixed(2)),T=e.used-e.cached-e.buffers,b=(0,d.formatSize)(T),f=(0,d.formatSize)(e.total-T),g=(0,l.toNumber)((T/e.total*100).toFixed(2)),p=(0,d.formatSize)(e.buffers),h=(0,d.formatSize)(e.cached),E=(0,l.toNumber)((e.cached/e.total*100).toFixed(2)),S=(0,d.formatSize)(e.swapused),_=(0,d.formatSize)(e.swapfree),N=(0,d.formatSize)(e.swaptotal),y=(0,l.toNumber)((e.swapused/e.swaptotal*100).toFixed(2));let L=c(m);return t.push(s.default.createElement("div",{key:"phsysical",className:"col-sm-12"},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("PHYSICAL_MEMORY_TITLE"),": ",m,"%",s.default.createElement("div",null),u.default.t("PHYSICAL_MEMORY_USED_TXT"),": ",s.default.createElement("div",{style:{color:"#eb4549",display:"contents"}},r)," | ",u.default.t("PHYSICAL_MEMORY_IDLE_TXT"),": ",s.default.createElement("div",{style:{color:"#eb4549",display:"contents"}},i)),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${m}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":m,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},m,"% ",u.default.t("USED")))))),e.cached>1e-5&&(L=c(E),t.push(s.default.createElement("div",{key:"cached",className:"col-sm-12",style:{paddingTop:"10px"}},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("CACHED_MEMORY_TITLE"),": ",E,"%",s.default.createElement("div",null),u.default.t("CACHED_MEMORY_USAGE_TXT",{cached:h})," | ",u.default.t("CACHED_MEMORY_BUFFERS_TXT",{buffered:p})),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${E}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":E,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},E,"% ",u.default.t("USED")))))),L=c(g),t.push(s.default.createElement("div",{key:"real",className:"col-sm-12",style:{paddingTop:"10px"}},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("REAL_MEMORY_TITLE"),": ",g,"%",s.default.createElement("div",null),u.default.t("REAL_MEMORY_USAGE_TXT",{used:b})," | ",u.default.t("REAL_MEMORY_FREE_TXT",{free:f})),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${g}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":g,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},g,"% ",u.default.t("USED"))))))),e.swaptotal>1e-5&&(L=c(y),t.push(s.default.createElement("div",{key:"swap",className:"col-sm-12",style:{paddingTop:"10px"}},s.default.createElement("p",{style:{fontSize:"10px"}},u.default.t("SWAP_TITLE"),": ",y,"%",s.default.createElement("div",null),u.default.t("SWAP_TOTAL_TXT"),": ",u.default.t("TOTAL_L",{total:N})," | ",u.default.t("SWAP_USED_TXT",{used:S})," | ",u.default.t("SWAP_IDLE_TXT",{free:_})),s.default.createElement("div",{className:"progress progress-striped"},s.default.createElement("div",{style:{width:`${y}%`},"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":y,role:"progressbar",className:`progress-bar ${L}`},s.default.createElement("span",{className:"sr-only"},y,"% ",u.default.t("USED"))))))),o.default.renderToString(s.default.createElement("div",null,s.default.createElement("div",{className:"row"},t),s.default.createElement("hr",null),s.default.createElement("h3",null,u.default.t("TOTAL_RAM")),s.default.createElement("h4",{className:"nomargin",dangerouslySetInnerHTML:{__html:`${n}\n `}})))}))};const a=n(r(333)),s=n(r(2015)),o=n(r(4468)),l=r(7825),u=n(r(612)),d=r(292);function c(e){return(e=(0,l.toNumber)(e))>=90?"progress-bar-danger":e>=70?"progress-bar-warning":"progress-bar-success"}},4589:function(e,t,r){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.upTime=void 0;const n=i(r(333)),a=i(r(2015)),s=i(r(4468)),o=i(r(612));t.upTime=()=>{const e=n.default.time().uptime,t=Math.floor(e/60/60/24),r=Math.floor(e/60/60%24),i=Math.floor(e/60%60);return s.default.renderToString(a.default.createElement("span",{style:{fontSize:"14px"}},a.default.createElement("b",null,t),a.default.createElement("small",null,o.default.t("DAYS_L")),a.default.createElement("b",null,r),a.default.createElement("small",null,o.default.t("HOURS_L")),a.default.createElement("b",null,i),a.default.createElement("small",null,o.default.t("MINUTES_L"))))}},8938:e=>{e.exports=require("axios")},2860:e=>{e.exports=require("bignumber.js")},7252:e=>{e.exports=require("express")},7825:e=>{e.exports=require("lodash")},9551:e=>{e.exports=require("make-plural")},2015:e=>{e.exports=require("react")},4468:e=>{e.exports=require("react-dom/server")},4437:e=>{e.exports=require("socket.io")},333:e=>{e.exports=require("systeminformation")},5086:e=>{e.exports=require("ws")},5317:e=>{e.exports=require("child_process")},9896:e=>{e.exports=require("fs")},1943:e=>{e.exports=require("fs/promises")},8611:e=>{e.exports=require("http")},5692:e=>{e.exports=require("https")},857:e=>{e.exports=require("os")},6928:e=>{e.exports=require("path")},1699:e=>{e.exports=JSON.parse('{"AGREE":"Jeg er med, gør det!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi er et plugin til irssi, der overvåger IRC annoncerer kanaler og downloader torrent-filer baseret på brugerdefinerede filtre.","AVAILABILITY":"Tilgængelighed","All time":"Samlet","BANDWIDTH_DATA":"Båndbredde","BOX":"Kun BOX","BOX_TOOLTIP_ART":"Adgang til denne feature fås via ssh ved at skrive: box install art","BOX_TOOLTIP_DENYHOSTS":"Adgang til denne feature fås via ssh ved at skrive: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Adgang til denne feature fås via ssh ved at skrive: box install fail2ban","BOX_TOOLTIP_H5AI":"Adgang til denne feature fås via ssh ved at skrive: box install h5ai","BOX_TOOLTIP_LECERT":"Adgang til denne feature fås via ssh ved at skrive: box install lecert","BOX_TOOLTIP_ZNC":"Adgang til denne feature fås via ssh ved at skrive: box install znc","BTSYNC":"BitTorrent Sync by BitTorrent, Inc er et proprietært peer-to-peer-fil synkronisering værktøj.","BW_SELECT":"Båndbredde mulighed","CACHED_MEMORY_BUFFERS_TXT":"Buffers ligger på {{buffered}}","CACHED_MEMORY_TITLE":"Cached Hukommelsesforbrug","CACHED_MEMORY_USAGE_TXT":"Cache hukommelsesforbrug ligger på {{cached}}","CANCEL":"Fortryd","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Skriv denne kommando i ssh for at ændre en brugers agdgangskode.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Skriv denne kommando i ssh (root) for at nulstille systemets fysiske Hukommelsescache.","CLEAR_CACHE":"Ryd Hukommelsescache","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Luk & Genopfrisk","COMPARE_COMMITS":"compare your current status to the latest commits.","CPU_STATUS":"CPU Status","CURRENT_COMMIT":"View your current commit status","CURRENT_VERSIONS_CHANGELOG":"View your current versions changelog.","DAYS_L":"dage","DELUGE":"Deluge en gratis letvægts cross-platform BitTorrent klient.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Detaljer","DEV_REPO_TXT":"Du er på QuickBox {{branch}} Repo","DISABLED":"Deaktiveret","DISKTEST_TXT":"Skriv denne kommando for at udføre en hurtig s/l test af din disk.","DISK_SPACE":"Disk Plads","DOWNLOAD":"Download","DOWNLOADS":"Downloads","DTORRENTS_TITLE":"Torrents i Deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Aktiveret","ENABLE_DISABLE_SERVICES":"Aktiver/Deaktiver","ESSENTIAL_USER_COMMANDS":"Vigtige Brugerkommandoer","FAIL2BAN":"Fail2Ban er et framework til indtrængningsforebyggelse af software som beskytter servere imod brute force angreb.","FILEBROWSER":"Filbrowser giver en filhåndteringsgrænseflade indenfor en bestemt mappe, og den kan bruges til at uploade, slette, forhåndsvise, omdøbe og redigere dine filer. Det tillader oprettelse af flere brugere, og hver bruger kan have sin egen mappe. Det kan bruges som en selvstændig app eller som middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet er et multifunktionsautomatiseringsværktøj til alle dine medier. Understøtter torrents, nzbs, podcasts, tegneserier, tv, film, RSS, HTML, CSV og meget mere.","FLOOD":"Flood er en anden webgrænseflade til rtorrent. Det implementerer en Node.js-server til kommunikation med rTorrent API, lagring af historiske data og visning af web-brugergrænsefladen.","FREE":"Ledig","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Hjælpekommandoer & Mere","HOURS_L":"tim","INSTALL":"Install","INSTALLED":"Installeret","INSTALLING":"Installerer","ISSUE_REPORT_TXT":"Rapporter et problem","In":"Ind","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Vælg sprog","LATEST_COMMIT":"latest.","LECERT":"Let\'s Encrypt er en gratis, automatiseret og åben certifikatmyndighed (CA). Det er en tjeneste fra Internet Security Research Group (ISRG).","Last 12 months":"Seneste 12 måneder","Last 30 days":"Seneste 30 dage","MAIN_MENU":"Hovedmenu","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Navn","NETDATA":"Netdata er et distribueret, realtids - ydeevne og sundheds overvågning for systemer og applikationer.","NETWORK":"Netværk","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC er både et VNC klient JavaScript bibliotek samt et program bygget oven på biblioteket. noVNC kører godt i enhver moderne browser, herunder mobilbrowsere (iOS og Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Ud","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Pakkeadministration","PANEL_CONFIG":"Panelkonfiguration","PANEL_RESET":"Nulstil panel","PERCENTAGE_TXT":"Du har brugt {{used}}% af din totale disk plads","PHYSICAL_MEMORY_IDLE_TXT":"ledig","PHYSICAL_MEMORY_TITLE":"Fysisk Hukommelsesforbrug","PHYSICAL_MEMORY_USED_TXT":"brugt","PLEX":"Plex lader dig streame dit indhold til enhver Plex enhed.","PLUGINS":"Plugins","PLUGIN_MENU":"Pluginmenu","PMC_NOTICE_TXT":"Bemærk! Disse muligheder er ikke det samme som aktivering og deaktivering af en softwarepakke. Disse muligheder er designet til enten at installere eller afinstallere.","PMENU_NOTICE_TXT":"Nemt at installere og afinstallere ruTorrent plugins blot ved at klikke på pluginnavnet","QBITTORRENT":"qBittorrent er en gratis og pålidelig P2P BitTorrent klient. En avanceret multiplatform BitTorrent-klient med en flot Qt-brugergrænseflade samt et web-interface til remote betjening og en integreret søgemaskine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"You are on the QuickBox commit - ","QUICK_SYSTEM_TIPS":"Hurtige System Tips","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Aktuel hukommelse ledig {{free}}","REAL_MEMORY_TITLE":"Aktuel Hukommelsesforbrug","REAL_MEMORY_USAGE_TXT":"Aktuel hukommelsesforbrug ligger på {{used}}","RECENT_UPDATES":"Seneste Aktivitet & Opdateringer","REFRESH":"Genopfrisk","RESTART_SERVICES":"Genstart Services","RPLUGIN_MENU":"ruTorrent Pluginmenu","RTORRENT":"rTorrent er en hurtig og effektiv BitTorrent-klient, der bruger og er ved at blive udviklet sammen med libTorrent-biblioteket (ikke forveksles med libtorrent-rasterbar). Det er skrevet i C ++ og bruger ncurses programmeringsbiblioteket, hvilket betyder at det bruger en tekstbrugergrænseflade.","RTORRENTS_TITLE":"Torrents i rTorrent","RUTORRENT":"ruTorrent er en front-end til den populære Bittorrent klient rtorrent. Hovedfunktioner: Letvægts serverside, så den kan installeres på gamle og low-end servere og selv på nogle SOHO routere, Udvidelser - der er flere plugins, og alle kan lave deres eget, kommer med club-QuickBox tema.","Recent hours":"Seneste timer","SCREEN_RTORRNENT_TXT":"tillader en bruger at genstarte/genforbinde rtorrent via SSH","SECONDS_L":"sek","SEEDBOX_COMMANDS":"Seedbox Kommandoer","SERVER_LOAD":"Serverbelastning","SERVICE_CONTROL_CENTER":"Servicekontrol","SERVICE_STATUS":"Service Status","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Størrelse","SL_TXT":"Din servers aktuelle belastningsgennemsnit","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"ledig {{free}}","SWAP_TITLE":"Swap Forbrug","SWAP_TOTAL_TXT":"SWAP Område","SWAP_USED_TXT":"brugt {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Open Source kontinuerlig Filsynkronisering med BitTorrent","SYSTEM_RAM_STATUS":"RAM Status","SYSTEM_RESPONSE_TITLE":"System Respons","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Oversigt","THEME_CHANGE_TXT":"You are about to change themes. If the theme doesn\'t appear correctly for you after the refresh, you probably need to clear your browser cache and retry.","THEME_SELECT":"Select Theme","TORRENTS_LOADED":"Der er indlæst {{loaded}} torrents","TOTAL_L":"total {{total}}","TOTAL_RAM":"Total System RAM","TRANSMISSION":"Transmission is designed for easy, powerful use. The defaults are set to Just Work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Denne dag","This hour":"Denne time","This month":"Denne måned","Top 10 days":"Top 10 dage","Total":"Total","UNINSTALLED":"Uinstalleret","UNINSTALLING":"Afinstallerer","UNINSTALLING_TITLE":"Afinstallerer","UNINSTALLING_TXT_1":"Vent venligst et øjeblik","UNINSTALLING_TXT_2":"bliver afinstalleret fra dit system.","UNINSTALL_AUTODL_TXT":"Du er ved at afinstallere AutoDL-iRSSi fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere AutoDL-iRSSi til hver en tid, men din sti til lagering og linkede mappeindstillinger vil blive nulstillet til standard.","UNINSTALL_BTSYNC_TXT":"Du er ved at afinstallere BitTorrent Sync fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere BitTorrent Sync til hver en tid, men din sti til lagering og linkede mappeindstillinger vil blive nulstillet til standard.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Du er ved at afinstallere Deluge fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Deluge til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_EMBY_TXT":"Du er ved at afinstallere Emby Media Server fra dit system.

Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Emby til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_FILEBROWSEREE_TXT":"Du er ved at afinstallere File Browser fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere File Browser Enhanced til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_FILEBROWSER_TXT":"Du er ved at afinstallere File Browser fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere File Browser til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_FLEXGET_TXT":"Du er ved at afinstallere FlexGet fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere FlexGet til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_FLOOD_TXT":"Du er ved at afinstallere Flood fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Flood til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_JELLYFIN_TXT":"Du er ved at afinstallere Jellyfin Media Server fra dit system.

Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Jellyfin til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_NETDATA_TXT":"Du er ved at afinstallere Netdata fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Netdata til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Du er ved at afinstallere noVNC fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere noVNC til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Du er ved at afinstallere Plex Media Server fra dit system.

Dette vil fuldstændig fjerne din kofiguration og biblioteksindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Plex til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_QBITTORRENT_TXT":"Du er ved at afinstallere qBittorrent fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere qBittorrent til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Du er ved at afinstallere Rclone fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Rclone til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_RTORRENT_TXT":"Du er ved at afinstallere rTorrent fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere rTorrent til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_RUTORRENT_TXT":"Du er ved at afinstallere ruTorrent fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere ruTorrent til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_SABNZBD_TXT":"Du er ved at afinstallere SABnzbd fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere SABnzbd til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Du er ved at afinstallere Syncthing fra dit system.

Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Syncthing til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_WEBDAV_TXT":"Du er ved at afinstallere WebDAV fra dit system.

Dette vil fuldstændig fjerne dine kofigurations og delte indstillinger for alle brugere... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere WebDAV til hver en tid, men din sti til lagring og linkede mappeindstillinger vil blive nulstillet til standard..","UNINSTALL_TITLE":"Afinstaller","UNINSTALL_TRANSMISSION_TXT":"Du er ved at afinstallere Transmission fra dit system.

Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere Transmission til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UNINSTALL_X2GO_TXT":"Du er ved at afinstallere x2go fra dit system.

Dette vil fuldstændig fjerne x2goserver og xfce4 desktopmiljøet fra dit system.","UNINSTALL_ZNC_TXT":"Du er ved at afinstallere ZNC fra dit system.

Dette vil fuldstændig fjerne dine kofigurationsindstillinger... denne handling kan ikke fortrydes.

Du har mulighed for at geninstallere ZNC til hver en tid, men dine indstillinger vil blive nulstillet til standard.","UPDATE":"Opdater","UPLOAD":"Upload","UPTIME":"Oppetid","USED":"Brugt","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Båndbreddedetaljer","WEB_CONSOLE":"Webkonsol","WEBDAV":"WebDAV er en engelsk forkortelse for \\"Web-based Distributed Authoring and Versioning\\". Det er en udvidelse af http-protokollen og giver web-redaktører mulighed for at samarbejde om det at forfatte, redigere og udgive et web-sted på et fjernt beliggende it-system med anvendelse af versionskontrol.","YOUR_DISK_STATUS":"Disk Status","ZNC":"ZNC er en IRC bouncer eller BNC. Den kan frigøre ircklienten fra serveren eller kanalen og holde din klient ajour når der igen sker en tilkobling."}')},8127:e=>{e.exports=JSON.parse('{"AGREE":"Ich verstehe, zieh durch!","APP_INSTALL_TXT":"Führe diesen Befehl via SSH aus, um eine Software-Paketes zu installieren.","APP_UNINSTALL_TXT":"Führe diesen Befehl via SSH aus, um eine Software-Paketes zu löschen.","APP_UPGRADE_TXT":"Führe diesen Befehl via SSH aus, um eine Software-Paketes zu aktualisieren.","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi ist ein Plugin für irssi, das IRC-Ankündigungskanäle überwacht und Torrent-Dateien auf Basis benutzerdefinierter Filter herunterlädt.","AVAILABILITY":"Verfügbarkeit","All time":"Insgesamte Zeit","BANDWIDTH_DATA":"Bandbreite","BOX":"Nur BOX","BOX_TOOLTIP_ART":"Greife per SSH auf das Feature mit dem Befehl \\"box install art\\" zu","BOX_TOOLTIP_DENYHOSTS":"Greife per SSH auf das Feature mit dem Befehl \\"box install denyhosts\\" zu","BOX_TOOLTIP_FAIL2BAN":"Greife per SSH auf das Feature mit dem Befehl \\"box install fail2ban\\" zu","BOX_TOOLTIP_H5AI":"Greife per SSH auf das Feature mit dem Befehl \\"box install h5ai\\" zu","BOX_TOOLTIP_LECERT":"Greife per SSH auf das Feature mit dem Befehl \\"box install lecert\\" zu","BOX_TOOLTIP_ZNC":"Greife per SSH auf das Feature mit dem Befehl \\"box install znc\\" zu","BTSYNC":"BitTorrent Sync von BitTorrent, Inc ist ein proprietäres Peer-to-Peer Dateisynchronisationsprogramm.","BW_SELECT":"Bandbreitenoption","CACHED_MEMORY_BUFFERS_TXT":"Zwischenspeicher liegen bei {{buffered}}","CACHED_MEMORY_TITLE":"Gecachte Speichernutzung","CACHED_MEMORY_USAGE_TXT":"Cache Speichernutzung liegt bei {{cached}}","CANCEL":"Abbrechen","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Führe diesen Befehl via SSH aus, um das Passwort eines Benutzers zu ändern.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Führe diesen Befehl via SSH aus, um die Logs zu löschen.","CLEAN_MEM_TXT":"Führe den oben genannten Befehl als root aus, wenn du den physikalischen Cache-Speicher deines Systems löschen möchtest.","CLEAR_CACHE":"Lösche den Cache-Speicher","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Schließen & Aktualisieren","COMPARE_COMMITS":"compare your current status to the latest commits.","CPU_STATUS":"Status der CPU","CURRENT_COMMIT":"View your current commit status","CURRENT_VERSIONS_CHANGELOG":"View your current versions changelog.","DAYS_L":"Tage","DELUGE":"Deluge ist ein leichter, kostenloser, Cross-Plattform BitTorrent-Client.","DENYHOSTS":"DenyHosts ist ein in Python geschriebenes, log-basiertes Intrusion Prevention System für SSH-Server.","DETAILS":"Details","DEV_REPO_TXT":"Du bist im QuickBox {{branch}} Repo","DISABLED":"Deaktiviert","DISKTEST_TXT":"Dieser Befehl führt einen schnellen Lese/Schreib-Test deiner Festplatte durch.","DISK_SPACE":"Speicherplatz","DOWNLOAD":"Download","DOWNLOADS":"Downloads","DTORRENTS_TITLE":"Torrents in Deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Aktiviert","ENABLE_DISABLE_SERVICES":"Aktivieren/Deaktivieren","ESSENTIAL_USER_COMMANDS":"Grundlegende Nutzerbefehle","FAIL2BAN":"Fail2Ban ist ein Software-Framework zur Einbruchsvermeidung, das Computerserver vor Brute-Force-Angriffen schützt.","FILEBROWSER":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Führe diesen Befehl via SSH aus, um das Installation-lock zu löschen.","FLEXGET":"FlexGet ist ein Mehrzweck-Automatisierungstool für alle Ihre Medien. Unterstützung für Torrents, NZBs, Podcasts, Comics, TV, Filme, RSS, HTML, CSV und mehr.","FLOOD":"Flood ist ein weiteres Webinterface für rtorrent. Es implementiert einen Node.js-Server, um mit der rTorrent-API zu kommunizieren, historische Daten zu speichern und die Web-Benutzeroberfläche zu bedienen.","FREE":"Frei","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Hilfsbefehle & Mehr","HOURS_L":"Stunden","INSTALL":"Installieren","INSTALLED":"Installiert","INSTALLING":"Installiere","ISSUE_REPORT_TXT":"Report an issue","In":"Eingehend","In_AVG":"Eingehend Mittelwert","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Wähle die Sprache aus","LATEST_COMMIT":"latest.","LECERT":"Let\'s Encrypt ist eine kostenlose, automatisierte und offene Certificate Authority (CA), die zum Nutzen der Öffentlichkeit betrieben wird. Es ist ein Service der Internet Security Research Group (ISRG).","Last 12 months":"Letzte 12 Monate","Last 30 days":"Letzte 30 Tage","MAIN_MENU":"Hauptmenü","MINUTES_L":"min","MOUNT_POINT":"Einhängepunkt","NAME":"Name","NETDATA":"Netdata ist eine verteilte Echtzeit-, Leistungs- und Zustandsüberwachung für Systeme und Anwendungen.","NETWORK":"Netzwerk","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC ist sowohl eine VNC-Client-JavaScript-Bibliothek als auch eine Anwendung, die auf dieser Bibliothek basiert. noVNC kann in allen modernen Browsern, einschließlich mobilen Browsern, verwendet werden (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Ausgehend","Out_AVG":"Ausgehend Mittelwert","PACKAGE_MANAGEMENT_CENTER":"Paket Management Center","PANEL_CONFIG":"Panel-Konfiguration","PANEL_RESET":"Panel zurücksetzen","PERCENTAGE_TXT":"Du hast schon {{used}}% deines gesamten Speicherplatzes belegt","PHYSICAL_MEMORY_IDLE_TXT":"frei","PHYSICAL_MEMORY_TITLE":"Physikalisch genutzter Speicher","PHYSICAL_MEMORY_USED_TXT":"belegt","PLEX":"Mit Plex kannst du deine Medien verwalten und auf jedes Gerät streamen, auf dem Plex verfügbar ist.","PLUGINS":"Plugins","PLUGIN_MENU":"Plugin Menü","PMC_NOTICE_TXT":"Achtung! Lass dir bitte gesagt sein, dass diese Optionen nicht die gleichen wie das Aktivieren und Deaktivieren eines Software-Paketes sind. Diese Optionen sind nur für das Installieren sowie Deinstallieren vorgesehen.","PMENU_NOTICE_TXT":"Hier kannst du ganz einfach die ruTorrent Plugins mit einem Klick auf den Namen installieren oder deinstallieren","QBITTORRENT":"qBittorrent ist ein kostenloser und zuverlässiger P2P-BitTorrent-Client. Ein erweiterter BitTorrent-Client für mehrere Plattformen mit einer schönen Qt-Benutzeroberfläche sowie eine Web-Benutzeroberfläche für die Fernsteuerung und eine integrierte Suchmaschine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"You are on the QuickBox commit - ","QUICK_SYSTEM_TIPS":"Quick System Tipps","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Tatsächlich freier Speicher {{free}}","REAL_MEMORY_TITLE":"Tatsächliche Speichernutzung","REAL_MEMORY_USAGE_TXT":"Tatsächlich verwendeter Speicher {{used}}","RECENT_UPDATES":"Recent Activity","REFRESH":"Aktualisieren","RESTART_SERVICES":"Dienste neustarten","RPLUGIN_MENU":"ruTorrent Plugin Menü","RTORRENT":"rTorrent ist ein schneller und effizienter BitTorrent-Client, der die Bibliothek libTorrent (nicht zu verwechseln mit libtorrent-rasterbar) verwendet und in Entwicklung ist. Es ist in C ++ geschrieben und verwendet die Programmierbibliothek ncurses, was bedeutet, dass es eine Text-Benutzerschnittstelle verwendet. Das ruTorrent-Frontend wird zusätzlich installiert.","RTORRENTS_TITLE":"Torrents in rTorrent","RUTORRENT":"ruTorrent ist ein Front-End für den beliebten Bittorrent-Client rtorrent. Hauptmerkmale: Leichte Server-Seite, so kann es auf alten und Low-End-Servern und sogar auf einigen SOHO-Routern installiert werden, Extensible - es gibt mehrere Plugins und jeder kann ihre eigenen erstellen, kommt mit club-QuickBox haut.","Recent hours":"Letzte Stunden","SCREEN_RTORRNENT_TXT":"Ermöglicht es dem Nutzer, rTorrent via SSH neuzustarten oder neu einzubinden.","SECONDS_L":"sek","SEEDBOX_COMMANDS":"Seedbox Befehle","SERVER_LOAD":"Server-Last","SERVICE_CONTROL_CENTER":"Dienst Kontrollcenter","SERVICE_STATUS":"Status der Dienste","SET_LANG_TXT":"Führe diesen Befehl via SSH aus, um die Spreche der Dashboard einzurichten.","SIZE":"Größe","SL_TXT":"Aktuelle Durchschnittsbelastung deines Servers","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"frei {{free}}","SWAP_TITLE":"Swap-Nutzung","SWAP_TOTAL_TXT":"SWAP Area","SWAP_USED_TXT":"belegt {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Syncthing ist eine quelloffen und in Go geschriebene Dateisynchronisation mit BitTorrent.","SYSTEM_RAM_STATUS":"Status deines Arbeitsspeichers","SYSTEM_RESPONSE_TITLE":"System-Antwort","SYS_UPGRADE_TXT":"Führe diesen Befehl via SSH aus, um Ihr QuickBox Lite-System zu aktualisieren.","Summary":"Zusammenfassung","THEME_CHANGE_TXT":"Sie sind dabei, Themen zu ändern. Wenn das Thema nach der Aktualisierung nicht korrekt für Sie erscheint, müssen Sie wahrscheinlich Ihren Browser-Cache löschen und erneut versuchen.","THEME_SELECT":"Thema wählen","TORRENTS_LOADED":"Es sind {{loaded}} Torrents im Moment geladen","TOTAL_L":"gesamt {{total}}","TOTAL_RAM":"Gesamter Arbeitsspeicher","TRANSMISSION":"Transmission ist für eine einfache, leistungsstarke verwendung ausgelegt. Die Standardeinstellungen sind auf „Just Work“ (Just Work) eingestellt. Die Konfiguration erweiterter Funktionen wie Watch-Verzeichnisse, fehlerhafte Peer-Blocklisten und die Webschnittstelle erfordert nur wenige Klicks. Als Ubuntu Transmission als Standard-BitTorrent-Client auswählte, war einer der am häufigsten genannten Gründe die einfache Lernkurve.","TROUBLESHOOT_TXT":"Führe diesen Befehl via SSH aus, um ein Log zur Fehlerbehebung zu erstellen.","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Dieser Tag","This hour":"Diese Stunde","This month":"Dieser Monat","Top 10 days":"Top 10 Tage","Total":"Gesamt","UNINSTALLED":"Deinstalliert","UNINSTALLING":"Deinstalliere","UNINSTALLING_TITLE":"Deinstalliere","UNINSTALLING_TXT_1":"Bitte warte kurz, während","UNINSTALLING_TXT_2":"von deinem System deinstalliert wird.","UNINSTALL_AUTODL_TXT":"Du bist gerade dabei, AutoDL-iRSSi auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit AutoDL-iRSSi neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_BTSYNC_TXT":"Du bist gerade dabei, BitTorrent Sync auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit BitTorrent Sync neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Du bist gerade dabei, Deluge auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner für alle Nutzer löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Deluge neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_EMBY_TXT":"Du bist gerade dabei, Emby Media Server auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Emby neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.","UNINSTALL_FILEBROWSEREE_TXT":"Du bist gerade dabei, File Browser auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit File Browser Enhanced neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_FILEBROWSER_TXT":"Du bist gerade dabei, File Browser auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit File Browser neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_FLEXGET_TXT":"Du bist gerade dabei, FlexGet auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit FlexGet neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_FLOOD_TXT":"Du bist gerade dabei, Flood auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Flood neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_JELLYFIN_TXT":"Du bist gerade dabei, Jellyfin Media Server auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Jellyfin neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.","UNINSTALL_NETDATA_TXT":"Du bist gerade dabei, Netdata auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Netdata neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Du bist gerade dabei, noVNC auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit noVNC neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Du bist gerade dabei, Plex Media Server auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Bibliothekseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Plex neu installieren, dabei werden jedoch deine Bibliothekseinstellungen komplett zurückgesetzt.","UNINSTALL_QBITTORRENT_TXT":"Du bist gerade dabei, qBittorrent auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit qBittorrent neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Du bist gerade dabei, Rclone auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Rclone neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_RTORRENT_TXT":"Du bist gerade dabei, rTorrent auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit rTorrent neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_RUTORRENT_TXT":"Du bist gerade dabei, ruTorrent auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit ruTorrent neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_SABNZBD_TXT":"Du bist gerade dabei, SABnzbd auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit SABnzbd neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Du bist gerade dabei, Syncthing auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamten Konfigurationseinstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit Syncthing neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.","UNINSTALL_TITLE":"Deinstallieren","UNINSTALL_TRANSMISSION_TXT":"You are about to uninstall Transmission from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Transmission at any time, however, your configuration settings will be reset to default.","UNINSTALL_WEBDAV_TXT":"Du bist gerade dabei, WebDAV auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen gemeinsamer Ordner löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit WebDAV neu installieren, dabei werden jedoch dein Speicherpfad sowie die verknüpften Ordnereinstellungen kompett zurückgesetzt.","UNINSTALL_X2GO_TXT":"Du bist gerade dabei, x2go auf deinem System zu deinstallieren.

Diese Aktion wird x2goserver und die xfce4-Desktopumgebung komplett von deinem System entfernen.","UNINSTALL_ZNC_TXT":"Du bist gerade dabei, ZNC auf deinem System zu deinstallieren.

Diese Aktion wird deine gesamte Konfiguration sowie alle Einstellungen löschen und ist nicht rückgängig zu machen.

Du kannst aber jederzeit ZNC neu installieren, dabei werden jedoch deine Einstellungen komplett zurückgesetzt.","UPDATE":"Updater ausführen","UPLOAD":"Upload","UPTIME":"Betriebszeit","USED":"Verwendet","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Zeige weitere Bandbreiten-Details","WEB_CONSOLE":"Webkonsole","WEBDAV":"WebDAV steht für \\"Web-based Distributed Authoring and Versioning\\". Es basiert auf dem Hypertext Transfer Protocol, unterstützt mittlerweile aber auch HTTPS. Mit WebDAV können ganze Verzeichnisse übertragen werden. Zudem ist eine Versionskontrolle spezifiziert.","X2GO":"X2Go ist eine Open-Source Remote-Desktop-Software für Linux, die das NX-Technologie-Protokoll verwendet.","YOUR_DISK_STATUS":"Status deines Speicherplatzes","ZNC":"ZNC ist ein IRC-Netzwerk Bouncer oder BNC. Er kann den Clienten vom eigentlichen IRC-Server sowie ausgewählten Chaträumen trennen."}')},6247:e=>{e.exports=JSON.parse('{"AGREE":"I understand, do it!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi is a plugin for irssi that monitors IRC announce channels and downloads torrent files based on user-defined filters.","AVAILABILITY":"Availability","All time":"All time","BANDWIDTH_DATA":"Bandwidth Data","BOX":"BOX Only","BOX_TOOLTIP_ART":"Access this feature from ssh by typing: box install art","BOX_TOOLTIP_DENYHOSTS":"Access this feature from ssh by typing: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Access this feature from ssh by typing: box install fail2ban","BOX_TOOLTIP_H5AI":"Access this feature from ssh by typing: box install h5ai","BOX_TOOLTIP_LECERT":"Get new HTTPS certificate by typing: box install lecert","BOX_TOOLTIP_ZNC":"Access this feature from ssh by typing: box install znc","BTSYNC":"BitTorrent Sync by BitTorrent, Inc is a proprietary peer-to-peer file synchronization tool.","BW_SELECT":"Bandwidth Option","CACHED_MEMORY_BUFFERS_TXT":"Buffers are at {{buffered}}","CACHED_MEMORY_TITLE":"Cached Memory Usage","CACHED_MEMORY_USAGE_TXT":"Cache memory usage is at {{cached}}","CANCEL":"Cancel","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Typing this command in ssh allows you to change a desired users password.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Use the above command as root if/when you decide to clear your systems Physical Memory Cache","CLEAR_CACHE":"Clear Memory Cache","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Close & Refresh","COMPARE_COMMITS":"compare your current status to the latest commits.","CPU_STATUS":"CPU Status","CURRENT_COMMIT":"View your current commit status","CURRENT_VERSIONS_CHANGELOG":"View your current versions changelog.","DAYS_L":"days","DELUGE":"Deluge is a lightweight, Free Software, cross-platform BitTorrent client.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Details","DEV_REPO_TXT":"You are on the QuickBox {{branch}} Repo","DISABLED":"Disabled","DISKTEST_TXT":"Type this command to perform a quick r/w test of your disk.","DISK_SPACE":"Disk Space","DOWNLOAD":"Download","DOWNLOADS":"Downloads","DTORRENTS_TITLE":"Torrents in deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Enabled","ENABLE_DISABLE_SERVICES":"Enable/Disable","ESSENTIAL_USER_COMMANDS":"Essential User Commands","FAIL2BAN":"Fail2Ban is an intrusion prevention software framework that protects computer servers from brute-force attacks.","FILEBROWSER":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet is a multipurpose automation tool for all of your media Support for torrents, nzbs, podcasts, comics, TV, movies, RSS, HTML, CSV, and more.","FLOOD":"Flood is another web interface for rtorrent. It implements a Node.js server for communicating with the rTorrent API, storing historical data, and serving the web UI.","FREE":"Free","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Help Commands & More","HOURS_L":"hrs","INSTALL":"Install","INSTALLED":"Installed","INSTALLING":"Installing","ISSUE_REPORT_TXT":"Report an issue","In":"In","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Select Language","LATEST_COMMIT":"latest.","LECERT":"Let\'s Encrypt is a free, automated, and open certificate authority (CA), run for the public\'s benefit. It is a service provided by the Internet Security Research Group (ISRG).","Last 12 months":"Last 12 months","Recent hours":"Recent hours","Last 30 days":"Last 30 days","MAIN_MENU":"Main Menu","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Name","NETDATA":"Netdata is distributed, real-time, performance and health monitoring for systems and applications.","NETWORK":"Network","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Out","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Package Management Center","PANEL_CONFIG":"Panel Config","PANEL_RESET":"Reset Panel","PERCENTAGE_TXT":"You have used {{used}}% of your total disk space","PHYSICAL_MEMORY_IDLE_TXT":"idle","PHYSICAL_MEMORY_TITLE":"Physical Memory Usage","PHYSICAL_MEMORY_USED_TXT":"used","PLEX":"Plex lets you stream your content to any Plex enabled device.","PLUGINS":"Plugins","PLUGIN_MENU":"Plugin Menu","PMC_NOTICE_TXT":"Heads Up! Please be advised that these options are not the same as enabling and disabling a software package. These options are designed to either install or uninstall.","PMENU_NOTICE_TXT":"Easily install and uninstall ruTorrent plugins simply by clicking on the plugin name","QBITTORRENT":"qBittorrent is a free and reliable P2P BitTorrent client. An advanced and multi-platform BitTorrent client with a nice Qt user interface as well as a Web UI for remote control and an integrated search engine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"You are on the QuickBox commit - ","QUICK_SYSTEM_TIPS":"Quick System Tips","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Real memory free {{free}}","REAL_MEMORY_TITLE":"Real Memory Usage","REAL_MEMORY_USAGE_TXT":"Real memory usage {{used}}","RECENT_UPDATES":"Recent Activity","REFRESH":"Refresh","RESTART_SERVICES":"Restart Services","RPLUGIN_MENU":"ruTorrent Plugin Menu","RTORRENT":"rTorrent is a text-based BitTorrent client written in C++, based on the ncurses and libTorrent (not to be confused with libtorrent) libraries for Unix, whose author\'s goal is \\"a focus on high performance and good code\\".","RTORRENTS_TITLE":"Torrents in rtorrent","RUTORRENT":"ruTorrent is a front-end for the popular Bittorrent client rtorrent. Main features: Lightweight server side, so it can be installed on old and low-end servers and even on some SOHO routers, Extensible - there are several plugins and everybody can create their own one, comes with club-QuickBox skin.","SCREEN_RTORRNENT_TXT":"allows user to restart/remount rtorrent from SSH","SECONDS_L":"sec","SEEDBOX_COMMANDS":"Seedbox Commands","SERVER_LOAD":"Server Load","SERVICE_CONTROL_CENTER":"Service Control Center","SERVICE_STATUS":"Service Status","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Size","SL_TXT":"This is your servers current load average","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"idle {{free}}","SWAP_TITLE":"Swap Usage","SWAP_TOTAL_TXT":"SWAP Area","SWAP_USED_TXT":"used {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Open Source Continuous File Synchronization with BitTorrent","SYSTEM_RAM_STATUS":"System RAM Status","SYSTEM_RESPONSE_TITLE":"System Response","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Summary","THEME_CHANGE_TXT":"You are about to change themes. If the theme doesn\'t appear correctly for you after the refresh, you probably need to clear your browser cache and retry.","THEME_SELECT":"Select Theme","TORRENTS_LOADED":"There are {{loaded}} torrents loaded","TOTAL_L":"total {{total}}","TOTAL_RAM":"Total System RAM","TRANSMISSION":"Transmission is designed for easy, powerful use. The defaults are set to Just Work and it only takes a few clicks to configure advanced features like watch directories, bad peer blocklists, and the web interface. When Ubuntu chose Transmission as its default BitTorrent client, one of the most-cited reasons was its easy learning curve.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"This day","This hour":"This hour","This month":"This month","Top 10 days":"Top 10 days","Total":"Total","UNINSTALLED":"Uninstalled","UNINSTALLING":"Uninstalling","UNINSTALLING_TITLE":"Uninstalling","UNINSTALLING_TXT_1":"Please wait while","UNINSTALLING_TXT_2":"is being uninstalled from your system.","UNINSTALL_AUTODL_TXT":"You are about to uninstall AutoDL-iRSSi from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall AutoDL-iRSSi at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_BTSYNC_TXT":"You are about to uninstall BitTorrent Sync from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall BitTorrent Sync at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"You are about to uninstall Deluge from your system.

This will completely remove all of your configuration and shared folder settings for all users... this action is irreversible.

You may reinstall Deluge at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_EMBY_TXT":"You are about to uninstall Emby Media Server from your system.

This will completely remove all of your configuration and library settings... this action is irreversible.

You may reinstall Emby at any time, however, your library settings will be reset to default.","UNINSTALL_FILEBROWSEREE_TXT":"You are about to uninstall File Browser Enhanced from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall File Browser Enhanced at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_FILEBROWSER_TXT":"You are about to uninstall filebrowser from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall filebrowser at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_FLEXGET_TXT":"You are about to uninstall flexget from your system.

This will completely remove all of your configurations... this action is irreversible.

You may reinstall flexget at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_FLOOD_TXT":"You are about to uninstall Flood from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall Flood at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_JELLYFIN_TXT":"You are about to uninstall Jellyfin Media Server from your system.

This will completely remove all of your configuration and library settings... this action is irreversible.

You may reinstall Jellyfin at any time, however, your library settings will be reset to default.","UNINSTALL_NETDATA_TXT":"You are about to uninstall Netdata from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall Netdata at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"You are about to uninstall noVNC from your system.

This will completely remove all of your configuration and shared folder settings... this action is irreversible.

You may reinstall noVNC at any time, however, your storage path and linked folder settings will be reset to default.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"You are about to uninstall Plex Media Server from your system.

This will completely remove all of your configuration and library settings... this action is irreversible.

You may reinstall Plex at any time, however, your library settings will be reset to default.","UNINSTALL_QBITTORRENT_TXT":"You are about to uninstall qBittorrent from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent at any time, however, your configuration settings will be reset to default.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"You are about to uninstall Rclone from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Rclone at any time, however, your configuration settings will be reset to default.","UNINSTALL_RTORRENT_TXT":"You are about to uninstall rTorrent from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall rTorrent at any time, however, your configuration settings will be reset to default.","UNINSTALL_RUTORRENT_TXT":"You are about to uninstall ruTorrent from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall ruTorrent at any time, however, your configuration settings will be reset to default.","UNINSTALL_SABNZBD_TXT":"You are about to uninstall SABnzbd from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall SABnzbd at any time, however, your configuration settings will be reset to default.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall LibreSpeed at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"You are about to uninstall Syncthing from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_TITLE":"Uninstall","UNINSTALL_TRANSMISSION_TXT":"You are about to uninstall Transmission from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Transmission at any time, however, your configuration settings will be reset to default.","UNINSTALL_WEBDAV_TXT":"You are about to uninstall WebDAV from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall WebDAV at any time, however, your configuration settings will be reset to default.","UNINSTALL_X2GO_TXT":"You are about to uninstall x2go from your system.

This will completely remove x2goserver and xfce4 desktop environment from your system.","UNINSTALL_ZNC_TXT":"You are about to uninstall ZNC from your system.

This will completely remove all of your configurations and settings... this action is irreversible.

You may reinstall ZNC at any time, however, your settings will be reset to default.","UPDATE":"Run Updater","UPLOAD":"Upload","UPTIME":"Uptime","USED":"Used","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"View Additional Bandwidth Details","WEB_CONSOLE":"Web Console","WEBDAV":"WebDAV stands for \\"Web-based Distributed Authoring and Versioning\\". It is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.","X2GO":"X2Go is an open source remote desktop software for Linux that uses the NX technology protocol.","YOUR_DISK_STATUS":"Your Disk Status","ZNC":"ZNC is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels."}')},8880:e=>{e.exports=JSON.parse('{"AGREE":"Lo entiendo ¡hazlo!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi es un plugin para irssi que supervisa los anuncios en canales IRC y descarga archivos de torrent según los filtros definidos por el usuario.","AVAILABILITY":"Disponibilidad","All time":"Siempre","BANDWIDTH_DATA":"Uso de la red","BOX":"Solo BOX","BOX_TOOLTIP_ART":"Accede a esta característica desde SSH escribiendo: box install art","BOX_TOOLTIP_DENYHOSTS":"Accede a esta característica desde SSH escribiendo: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Accede a esta característica desde SSH escribiendo: box install fail2ban","BOX_TOOLTIP_H5AI":"Accede a esta característica desde SSH escribiendo: box install h5ai","BOX_TOOLTIP_LECERT":"Accede a esta característica desde SSH escribiendo: box install lecert","BOX_TOOLTIP_ZNC":"Accede a esta característica desde SSH escribiendo: box install znc","BTSYNC":"BitTorrent Sync de BitTorrent, Inc es un software propietario basado en P2P para la sincronización e intercambio de archivos.","BW_SELECT":"Opción de ancho de banda","CACHED_MEMORY_BUFFERS_TXT":"El buffer está en {{buffered}}","CACHED_MEMORY_TITLE":"Uso de Memoria Caché","CACHED_MEMORY_USAGE_TXT":"El uso de Memoria Caché está en {{cached}}","CANCEL":"Cancelar","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Escribe este comando por SSH para cambiar la contraseña del usuario deseado.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Utiliza este comando como usuario root cuando quieras limpiar la memoria caché de tu sistema.","CLEAR_CACHE":"Limpiar Memoria Caché","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Cerrar y Refrescar","COMPARE_COMMITS":"Compara el estado actual de tu servidor con los últimos commits.","CPU_STATUS":"Estado del Procesador","CURRENT_COMMIT":"Ver el estado del commit actual.","CURRENT_VERSIONS_CHANGELOG":"Comprueba el registro de cambios de tu versión actual.","DAYS_L":"días","DELUGE":"Deluge es un cliente BitTorrent multiplataforma ligero y liviano, de software libre.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Detalles","DEV_REPO_TXT":"Estás en el repositorio de {{branch}} de Quickbox","DISABLED":"Deshabilitado","DISKTEST_TXT":"Escribe este comando para realizar un test de lectura/escritura en tu disco duro.","DISK_SPACE":"Espacio","DOWNLOAD":"Descarga","DOWNLOADS":"Descargas","DTORRENTS_TITLE":"Torrents en deluge","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Habilitado","ENABLE_DISABLE_SERVICES":"Activar/Desactivar","ESSENTIAL_USER_COMMANDS":"Comandos esenciales","FAIL2BAN":"Fail2Ban is an intrusion prevention software framework that protects computer servers from brute-force attacks.","FILEBROWSER":"filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app or as a middleware.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet es una herramienta de automatización multipropósito para todos sus medios. Soporte para torrents, nzbs, podcasts, comics, TV, películas, RSS, HTML, CSV, y más.","FLOOD":"Flood es una interfaz web para rtorrent. Implementa un servidor Node.js para comunicarse con la API de rTorrent, almacenar datos históricos y servir a la interfaz web.","FREE":"Libre","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Comandos de ayuda","HOURS_L":"horas","INSTALL":"Instalar","INSTALLED":"Instalado","INSTALLING":"Instalando","ISSUE_REPORT_TXT":"Informa de un problema","In":"Bajada","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Elige un idioma","LATEST_COMMIT":"último.","LECERT":"Let\'s Encrypt es una autoridad de certificación (CA) gratuita, automatizada y abierta, que se ejecuta en beneficio del público por el Grupo de Investigación de Seguridad de Internet (ISRG).","Last 12 months":"Últimos 12 meses","Last 30 days":"Últimos 30 días","MAIN_MENU":"Menú principal","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Nombre","NETDATA":"Netdata is distributed, real-time, performance and health monitoring for systems and applications.","NETWORK":"Red","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Subida","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Gestión de Paquetes","PANEL_CONFIG":"Configuración del panel","PANEL_RESET":"Restablecer panel","PERCENTAGE_TXT":"Tienes ocupado el {{used}}% del espacio total de tu disco duro","PHYSICAL_MEMORY_IDLE_TXT":"inactiva","PHYSICAL_MEMORY_TITLE":"Uso de Memoria Física","PHYSICAL_MEMORY_USED_TXT":"en uso","PLEX":"Plex lets you stream your content to any Plex enabled device.","PLUGINS":"Plugins","PLUGIN_MENU":"Menú de plugins","PMC_NOTICE_TXT":"¡Atención! Por favor, ten en cuenta que estas opciones no consisten en activar o desactivar paquetes de software. Estas opciones sirven para instalar y desinstalar programas.","PMENU_NOTICE_TXT":"Instala y desinstala plugins de ruTorrent pinchando sobre su nombre","QBITTORRENT":"qBittorrent is a free and reliable P2P BitTorrent client. An advanced and multi-platform BitTorrent client with a nice Qt user interface as well as a Web UI for remote control and an integrated search engine.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"Estás en el commit de Quickbox - ","QUICK_SYSTEM_TIPS":"Comandos de sistema","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Memoria Real Libre {{free}}","REAL_MEMORY_TITLE":"Uso de Memoria Real","REAL_MEMORY_USAGE_TXT":"Uso de Memoria Real {{used}}","RECENT_UPDATES":"Actividad Reciente","REFRESH":"Refrescar","RESTART_SERVICES":"Reiniciar","RPLUGIN_MENU":"Menú de plugins de ruTorrent","RTORRENT":"rTorrent es un cliente de BitTorrent rápido y eficiente que utiliza, y está en desarrollo junto con, la biblioteca libTorrent (que no debe confundirse con libtorrent-rasterbar). Está escrito en C ++ y usa la biblioteca de programación ncurses, lo que significa que usa una interfaz de usuario de texto.","RTORRENTS_TITLE":"Torrents en rtorrent","RUTORRENT":"ruTorrent es una interfaz web para el popular cliente de Bittorrent, rtorrent. Características principales: Liviano y ligero, por lo que puede instalarse en servidores antiguos y de gama baja, e incluso en algunos routers SOHO, Extensible: hay muchos plugins y todos pueden crear uno, viene con el tema club-QuickBox.","Recent hours":"Horarios recientes","SCREEN_RTORRNENT_TXT":"Permite reiniciar rtorrent desde SSH","SECONDS_L":"seg","SEEDBOX_COMMANDS":"Comandos de Seedbox","SERVER_LOAD":"Carga del Servidor","SERVICE_CONTROL_CENTER":"Control de Servicios","SERVICE_STATUS":"Estado","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Tamaño","SL_TXT":"Carga media de tu servidor","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"inactiva {{free}}","SWAP_TITLE":"Uso de Memoria SWAP","SWAP_TOTAL_TXT":"Memoria SWAP","SWAP_USED_TXT":"en uso {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Herramienta de código abierto para la sincronización continua de archivos mediante BitTorrent.","SYSTEM_RAM_STATUS":"Memoria RAM","SYSTEM_RESPONSE_TITLE":"Respuesta del Sistema","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Resumen","THEME_CHANGE_TXT":"Estás a punto de cambiar de tema. Si el tema selecciona no se muestra correctamente después de refrescar la página, probablemente necesitas limpiar la memoria caché de tu navegador y reintentarlo.","THEME_SELECT":"Elige un tema","TORRENTS_LOADED":"Tienes {{loaded}} torrents compartiendo","TOTAL_L":"total {{total}}","TOTAL_RAM":"RAM total del sistema","TRANSMISSION":"Transmission está diseñado para un uso sencillo pero potente. La configuración por defecto está establecida para funcionar de inicio, pero con unos pocos clicks se pueden añadir funciones avanzadas como monitorización de directorios, listas de bloqueo para pares malintencionados, y una interfaz web. Cuando Ubuntu establece Transmission como su cliente web por defecto, es debido a su cómoda curva de aprendizaje.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Hoy","This hour":"Última hora","This month":"Este mes","Top 10 days":"Mejores 10 días","Total":"Total","UNINSTALLED":"Desinstalado","UNINSTALLING":"Desinstalando","UNINSTALLING_TITLE":"Desinstalando","UNINSTALLING_TXT_1":"Por favor, espera,","UNINSTALLING_TXT_2":"está siendo desinstalado de tu sistema.","UNINSTALL_AUTODL_TXT":"Estás a punto de desinstalar AutoDL-iRSSi de tu sistema.

Esto eliminará completamente toda la configuración y los ajustes de directorios compartidos... esta acción es irreversible.

Puedes reinstalar AutoDL-iRSSi en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_BTSYNC_TXT":"Estás a punto de desinstalar BitTorrent Sync de tu sistema.

Esto eliminará completamente toda la configuración y los ajustes de directorios compartidos... esta acción es irreversible.

Puedes reinstalar BitTorrent Sync en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Estás a punto de desinstalar Deluge de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Deluge en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_EMBY_TXT":"Estás a punto de desinstalar Emby Media Server de tu sistema.

Esto eliminará completamente toda la configuración y ajustes de biblioteca... esta acción es irreversible.

Puedes reinstalar Emby en cualquier momento, sin embargo, la configuración de tu biblioteca será reiniciada por defecto.","UNINSTALL_FILEBROWSEREE_TXT":"Estás a punto de desinstalar File Browser Enhanced de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar File Browser Enhanced en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_FILEBROWSER_TXT":"Estás a punto de desinstalar File Browser de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar File Browser en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_FLEXGET_TXT":"Estás a punto de desinstalar FlexGet de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar FlexGet en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_FLOOD_TXT":"Estás a punto de desinstalar Flood de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Flood en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_JELLYFIN_TXT":"Estás a punto de desinstalar Jellyfin Media Server de tu sistema.

Esto eliminará completamente toda la configuración y ajustes de biblioteca... esta acción es irreversible.

Puedes reinstalar Jellyfin en cualquier momento, sin embargo, la configuración de tu biblioteca será reiniciada por defecto.","UNINSTALL_NETDATA_TXT":"Estás a punto de desinstalar Netdata de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Netdata en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Estás a punto de desinstalar noVNC de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar noVNC en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Estás a punto de desinstalar Plex Media Server de tu sistema.

Esto eliminará completamente toda la configuración y ajustes de biblioteca... esta acción es irreversible.

Puedes reinstalar Plex en cualquier momento, sin embargo, la configuración de tu biblioteca será reiniciada por defecto.","UNINSTALL_QBITTORRENT_TXT":"Estás a punto de desinstalar qBittorrent de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar qBittorrent en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Estás a punto de desinstalar Rclone de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar Rclone en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_RTORRENT_TXT":"Estás a punto de desinstalar rTorrent de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar rTorrent en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_RUTORRENT_TXT":"Estás a punto de desinstalar ruTorrent de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar ruTorrent en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_SABNZBD_TXT":"Estás a punto de desinstalar SABnzbd de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar SABnzbd en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Estás a punto de desinstalar Syncthing de tu sistema.

Esto eliminará completamente toda la configuración... esta acción es irreversible.

Puedes reinstalar Syncthing en cualquier momento, pero tus ajustes serán establecidos por defecto.","UNINSTALL_TITLE":"Desinstalar","UNINSTALL_TRANSMISSION_TXT":"Estás a punto de desinstalar Transmission de tu sistema.

Esto eliminará completamente toda la configuración... esta acción es irreversible.

Puedes reinstalar Transmission cuando desees, pero tus ajustes serán establecidos por defecto.","UNINSTALL_WEBDAV_TXT":"Estás a punto de desinstalar WebDAV de tu sistema.

Esto eliminará completamente toda la configuración y las opciones de directorios compartidos paratodos los usuarios... esta acción es irreversible.

Puedes reinstalar WebDAV en cualquier momento, sin embargo, tu ruta de almacenamiento y sus directorios enlazados serán establecidos por defecto.","UNINSTALL_X2GO_TXT":"Estás a punto de desinstalar x2go de tu sistema.

Esto eliminará completamente x2goserver y el entorno xfce4, de tu sistema.","UNINSTALL_ZNC_TXT":"Estás a punto de desinstalar ZNC de tu sistema.

Esto eliminará completamente toda la configuración y tus ajustes... esta acción es irreversible.

Puedes reinstalar ZNC cuando desees, pero tus ajustes serán establecidos por defecto.","UPDATE":"Actualizar","UPLOAD":"Subida ","UPTIME":"Tiempo encendido","USED":"Utilizado","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Detalles adicionales de la red","WEB_CONSOLE":"Consola Web","WEBDAV":"WebDAV es un grupo de trabajo del Internet Engineering Task Force. El término significa \\"Autoría y versionado distribuidos por Web\\" (Web Distributed Authoring and Versioning), y se refiere al protocolo (más precisamente, a la extensión del protocolo) que el grupo definió.","X2GO":"X2Go es un software de código abierto para acceso remoto al escritorio que utiliza el protocolo NX.","YOUR_DISK_STATUS":"Disco Duro","ZNC":"ZNC es un bouncer o BNC para IRC. Permite separar al cliente del servidor IRC, e incluso de canales concretos."}')},6964:e=>{e.exports=JSON.parse('{"AGREE":"Je comprends, fais-le!","APP_INSTALL_TXT":"Type this command to install a software","APP_UNINSTALL_TXT":"Type this command to uninstall a software","APP_UPGRADE_TXT":"Type this command to upgrade a software","ART":"Auto Remove Torrents can help you to remove your torrents. Now you don\'t need to worry about your disk space - according to your strategies, the program will check each torrent if it satisfies the remove condition; If so, delete it automatically.","AUTODL":"AutoDL-iRSSi est un plugin pour iRSSi qui surveille les canaux IRC et télécharge des fichiers torrent basés sur des filtres définis par l\'utilisateur.","AVAILABILITY":"Disponibilité","All time":"Au Total","BANDWIDTH_DATA":"Bande Passante","BOX":"BOX requis","BOX_TOOLTIP_ART":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install art","BOX_TOOLTIP_DENYHOSTS":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install denyhosts","BOX_TOOLTIP_FAIL2BAN":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install fail2ban","BOX_TOOLTIP_H5AI":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install h5ai","BOX_TOOLTIP_LECERT":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install lecert","BOX_TOOLTIP_ZNC":"Accedez à cette fonctionnalité en SSH simplement en tapant: box install znc","BTSYNC":"BitTorrent Sync par BitTorrent.Inc est un outil propriétaire peer-to-peer de synchronisation de fichiers.","BW_SELECT":"Option de bande passante","CACHED_MEMORY_BUFFERS_TXT":"Mémoire tampon est à {{buffered}}","CACHED_MEMORY_TITLE":"Utilisation de la Mémoire Cache","CACHED_MEMORY_USAGE_TXT":"Mémoire cache utilisée {{cached}}","CANCEL":"Annuler","CHANGEINTERFACE_TXT":"Type this command to setup network interface to be analyse.","CHANGEUSERPASS_TXT":"Tapez cette commande en SSH vous permet de changer les mots de passe des utilisateurs.","CIFS":"CIFS is a communication protocol for providing shared access to files, printers, and serial ports between nodes on a network.","CLEAN_LOG_TXT":"Type this command to clean installation logs","CLEAN_MEM_TXT":"Tapez cette commande en tant que root si/quand vous décidez de nettoyer le cache de Mémoire Physique.","CLEAR_CACHE":"Nettoyer le cache Mémoire","CLEAR_LOCK":"Clear lock","CLEAR_LOCK_TXT":"Install Lock Exist. If you believe this to be in error, click the button to remove the lock.","CLOSE_REFRESH":"Fermer & Rafraîchir","COMPARE_COMMITS":"Comparez votre état actuel avec les derniers commits.","CPU_STATUS":"Statut CPU","CURRENT_COMMIT":"Voir l\'état de votre dernier commit","CURRENT_VERSIONS_CHANGELOG":"Affiche le changelog de la version actuelle.","DAYS_L":"jours","DELUGE":"Deluge est un client BitTorrent léger, gratuit et multi-plateforme.","DENYHOSTS":"DenyHosts is a log-based intrusion-prevention security tool for SSH servers written in Python.","DETAILS":"Détails","DEV_REPO_TXT":"Vous êtes sur le Repo {{branch}} QuickBox","DISABLED":"Désactivé","DISKTEST_TXT":"Tapez cette commande pour effectuer un rapide test de lecture/écriture sur votre disque.","DISK_SPACE":"Espace Disque","DOWNLOAD":"Download","DOWNLOADS":"Téléchargement","DTORRENTS_TITLE":"Torrents dans Deluge: ","EMBY":"Emby is a media server designed to organize, play, and stream audio and video to a variety of devices.","ENABLED":"Activé","ENABLE_DISABLE_SERVICES":"Activer/Désactiver mes Services","ESSENTIAL_USER_COMMANDS":"Commandes utilisateur essentielles","FAIL2BAN":"Fail2Ban est une structure logicielle de prévention des intrusions qui protège les serveurs d\'ordinateur des attaques par force brute.","FILEBROWSER":"FileBrowser fournit une interface de gestion de fichiers dans un répertoire spécifié et peut être utilisé pour télécharger, supprimer, prévisualiser, renommer et éditer vos fichiers. Il permet la création de plusieurs utilisateurs et chaque utilisateur peut avoir son propre répertoire.","FILEBROWSEREE":"File Browser Enhanced is a Docker based File Browser, developed by 荒野无灯.","FIX_DPKG_TXT":"Type this command to resolve installation lock","FLEXGET":"FlexGet est un outil d\'automatisation polyvalent pour tous vos médias. Il prends en charge des torrents, NZBs, podcasts, bandes dessinées, télévision, films, flux RSS, HTML, CSV, etc.","FLOOD":"Flood est une autre interface web pour rtorrent. Il implémente un serveur Node.js pour communiquer avec l\'API rTorrent, stocker des données historiques et servir l\'interface utilisateur Web.","FREE":"Libre","H5AI":"A modern HTTP web server index for Apache httpd, lighttpd, and nginx.","HELP_COMMANDS":"Commandes d\'aide","HOURS_L":"hrs","INSTALL":"Installer","INSTALLED":"Installé","INSTALLING":"Installation","ISSUE_REPORT_TXT":"Reporter un problème","In":"Entrant","In_AVG":"Average In","JELLYFIN":"Jellyfin is a suite of multimedia applications designed to organize, manage, and share digital media files to networked devices.","LANG_SELECT":"Langue","LATEST_COMMIT":"Dernier.","LECERT":"Let\'s Encrypt est une autorité de certification (CA) gratuite, automatisée et ouverte, exploitée pour le bénéfice du public. Il s\'agit d\'un service fourni par l\' Internet Security Research Group (ISRG).","Last 12 months":"Les 12 derniers mois","Last 30 days":"Les 30 derniers jours","MAIN_MENU":"Menu Principal","MINUTES_L":"min","MOUNT_POINT":"Mount Point","NAME":"Nom","NETDATA":"Netdata est une surveillance distribuée, en temps réel, des performances et de l\'intégrité des systèmes et des applications.","NETWORK":"Réseau","NFS":"Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed.","NOVNC":"noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).","OPENVPN":"OpenVPN is open-source commercial software that implements virtual private network (VPN) techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities.","Out":"Sortant","Out_AVG":"Average Out","PACKAGE_MANAGEMENT_CENTER":"Centre de gestion des Packages","PANEL_CONFIG":"Configuration du panneau","PANEL_RESET":"Réinitialiser le panneau","PERCENTAGE_TXT":"Vous avez utilisé {{used}}% de votre espace disque total","PHYSICAL_MEMORY_IDLE_TXT":"Libre","PHYSICAL_MEMORY_TITLE":"Utilisation de la Mémoire Physique","PHYSICAL_MEMORY_USED_TXT":"Utilisé","PLEX":"Plex lets you stream your content to any Plex enabled device.","PLUGINS":"Plugins","PLUGIN_MENU":"Menu Plugins","PMC_NOTICE_TXT":"Attention! Ces options ne sont pas les mêmes que pour l\'activation et la désactivation d\'un logiciel. Elles sont conçues uniquement pour les installer ou désinstaller.","PMENU_NOTICE_TXT":"Installez et désinstallez facilement les plugins ruTorrent en cliquant simplement sur le nom du plugin.","QBITTORRENT":"qBittorrent est un client BitTorrent multi-plateforme, multilingue, léger et libre. Livré avec une interface utilisateur agréable et un moteur de recherche intégré.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker is client blocker compatible with qBittorrent, which is prohibited to include but not limited to clients such as Xunlei, and support qBittorrent 4.1 and above version.","QTORRENTS_TITLE":"Torrents in qBittorrent","QUICKBOX_COMMIT":"Vous êtes sur le commit - ","QUICK_SYSTEM_TIPS":"Astuces","RCLONE":"Rclone is an open source, multi threaded, command line computer program to manage or migrate content on cloud and other high latency storage. Its capabilities include sync, transfer, crypt, cache, union, compress and mount. The rclone website lists supported backends including S3, and Google Drive.","REAL_MEMORY_FREE_TXT":"Mémoire Réelle libre {{free}}","REAL_MEMORY_TITLE":"Utilisation de la Mémoire Réelle","REAL_MEMORY_USAGE_TXT":"Mémoire Réelle utilisée {{used}}","RECENT_UPDATES":"Activités Récentes","REFRESH":"Rafraîchir","RESTART_SERVICES":"Redémarrer mes Services","RPLUGIN_MENU":"Menu Plugins ruTorrent","RTORRENT":"rTorrent est un client BitTorrent rapide et efficace qui utilise, la bibliothèque libTorrent (à ne pas confondre avec libtorrent-rasterbar). Il est écrit en C ++ et utilise la bibliothèque de programmation ncurses, ce qui signifie qu\'il utilise une interface utilisateur texte. L\'interface de ruTorrent sera installée en plus.","RTORRENTS_TITLE":"Torrents dans rTorrent: ","RUTORRENT":"ruTorrent est l\'interface front-end du client Bittorrent \'rTorrent\'. Très léger côté serveur, il peut être installé sur des serveurs anciens et bas de gamme et même sur certains routeurs SOHO. Il existe plusieurs plugins pour que tout le monde puisse créer l\'interface qui lui ressemble, d\'ailleurs il vient avec notre thème maison : club-QuickBox.","Recent hours":"Heures récentes","SCREEN_RTORRNENT_TXT":"Autorise l\'utilisateur à redémarrer/remonter rTorrent en SSH.","SECONDS_L":"sec","SEEDBOX_COMMANDS":"Commandes Seedbox","SERVER_LOAD":"Charge Serveur","SERVICE_CONTROL_CENTER":"Centre de contrôle des services","SERVICE_STATUS":"Statut des services","SET_LANG_TXT":"Type this command to setup dashboard Language.","SIZE":"Taille","SL_TXT":"Ceci est la moyenne de charge de votre serveur.","SPEEDTEST":"This is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.","SWAP_IDLE_TXT":"Libre {{free}}","SWAP_TITLE":"Utilisation Swap","SWAP_TOTAL_TXT":"Zone SWAP","SWAP_USED_TXT":"Utilisé {{used}}","SWITCH_DEV":"Switch to development","SWITCH_MASTER":"Switch to master","SABNZBD":"The free and easy binary newsreader","SYNCTHING":"Syncthing est une application open source vous permettant de synchroniser vos fichiers en continu avec BitTorrent.","SYSTEM_RAM_STATUS":"Statut mémoire RAM","SYSTEM_RESPONSE_TITLE":"Réponse Système","SYS_UPGRADE_TXT":"Type this command to upgrade your QuickBox Lite system.","Summary":"Sommaire","THEME_CHANGE_TXT":"Vous allez changer de thème. Si le thème ne s\'affiche pas correctement après le rafraîchissement, il vous faudra probablement effacer le cache de votre navigateur et réessayer.","THEME_SELECT":"Thème","TORRENTS_LOADED":"Il y a {{loaded}} torrents chargés","TOTAL_L":"total {{total}}","TOTAL_RAM":"RAM Totale du Système: ","TRANSMISSION":"Transmission est conçue pour une utilisation facile et puissante. Les valeurs par défaut sont définies sur \'Just Work\' et il suffit de quelques clics pour configurer les fonctionnalités avancées telles que les répertoires de surveillance, les listes de blocage des pairs et l\'interface Web. Quand Ubuntu a choisi Transmission comme client BitTorrent par défaut, l\'une des raisons les plus citées était sa courbe d\'apprentissage facile.","TROUBLESHOOT_TXT":"Type this command to generate a log for troubleshooting","TRTORRENTS_TITLE":"Torrents in transmission","This day":"Aujourd\' hui","This hour":"Cette Heure","This month":"Ce Mois-ci","Top 10 days":"Les 10 meilleurs jours","Total":"Total","UNINSTALLED":"Désinstallé","UNINSTALLING":"Désinstallation","UNINSTALLING_TITLE":"Désinstallation","UNINSTALLING_TXT_1":"Patientez pendant que","UNINSTALLING_TXT_2":"soit désinstallé de votre système.","UNINSTALL_AUTODL_TXT":"Vous êtes sur le point de désinstaller AutoDL-iRSSi de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés ... cette action est irréversible.

Vous pouvez réinstaller AutoDL-iRSSi à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_BTSYNC_TXT":"Vous êtes sur le point de désinstaller BitTorrent Sync de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés ... cette action est irréversible.

Vous pouvez réinstaller BitTorrent Sync à tout moment, cependant, vos chemin de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_CIFS_TXT":"You are about to uninstall Samba Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall Samba Server at any time.","UNINSTALL_DELUGE_TXT":"Vous êtes sur le point de désinstaller Deluge de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Deluge à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_EMBY_TXT":"Vous êtes sur le point de désinstaller Emby Media Server de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller Emby à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_FILEBROWSEREE_TXT":"Vous êtes sur le point de désinstaller File Browser Enhanced de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller File Browser Enhanced à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_FILEBROWSER_TXT":"Vous êtes sur le point de désinstaller File Browser de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller File Browser à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_FLEXGET_TXT":"Vous êtes sur le point de désinstaller FlexGet de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller FlexGet à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_FLOOD_TXT":"Vous êtes sur le point de désinstaller Flood de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Flood à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_JELLYFIN_TXT":"Vous êtes sur le point de désinstaller Jellyfin Media Server de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller Jellyfin à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_NETDATA_TXT":"Vous êtes sur le point de désinstaller Netdata de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Netdata à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_NFS_TXT":"You are about to uninstall NFS Server from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall NFS Server at any time.","UNINSTALL_NOVNC_TXT":"Vous êtes sur le point de désinstaller noVNC de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller noVNC à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_OPENVPN_TXT":"You are about to uninstall OpenVPN from your system.

This will completely remove all of your configuration... this action is irreversible.

You may reinstall OpenVPN at any time.","UNINSTALL_PLEX_TXT":"Vous êtes sur le point de désinstaller Plex Media Server de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller Plex à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_QBITTORRENT_TXT":"Vous êtes sur le point de désinstaller qBittorrent de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller qBittorrent à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"You are about to uninstall qBittorrent-ClientBlocker from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall qBittorrent-ClientBlocker at any time, however, your configuration settings will be reset to default.","UNINSTALL_RCLONE_TXT":"Vous êtes sur le point de désinstaller Rclone de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller Rclone à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_RTORRENT_TXT":"Vous êtes sur le point de désinstaller rTorrent de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller rTorrent à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_RUTORRENT_TXT":"Vous êtes sur le point de désinstaller ruTorrent de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller ruTorrent à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_SABNZBD_TXT":"Vous êtes sur le point de désinstaller SABnzbd de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de librairies... cette action est irréversible.

Vous pouvez réinstaller SABnzbd à tout moment, cependant, vos paramètres et librairies seront réinitialisés.","UNINSTALL_SPEEDTEST_TXT":"You are about to uninstall LibreSpeed from your system.

This will completely remove all of your configuration settings... this action is irreversible.

You may reinstall Syncthing at any time, however, your configuration settings will be reset to default.","UNINSTALL_SYNCTHING_TXT":"Vous êtes sur le point de désinstaller Syncthing de votre système.

Cela va complètement supprimer tous ses paramètres... cette action est irréversible.

Vous pouvez réinstaller Syncthing à tout moment, cependant, vos paramètres de configuration seront réinitialisés.","UNINSTALL_TITLE":"Désinstaller","UNINSTALL_TRANSMISSION_TXT":"Vous êtes sur le point de désinstaller Transmission de votre système.

Cela va complètement supprimer tous ses paramètres... cette action est irréversible.

Vous pouvez réinstaller Transmission à tout moment, cependant, vos paramètres de configuration seront réinitialisés.","UNINSTALL_WEBDAV_TXT":"Vous êtes sur le point de désinstaller WebDAV de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres de dossiers partagés pour tous les utilisateurs... cette action est irréversible.

Vous pouvez réinstaller WebDAV à tout moment, cependant, vos chemins de stockage et les paramètres des dossiers liés seront réinitialisés.","UNINSTALL_X2GO_TXT":"Vous êtes sur le point de désinstaller x2go de votre système.

Cela va complètement supprimer x2goserver et l\'environnement de bureau xfce4 de votre système.","UNINSTALL_ZNC_TXT":"Vous êtes sur le point de désinstaller ZNC de votre système.

Cela va complètement supprimer toutes ses configurations et paramètres... cette action est irréversible.

Vous pouvez réinstaller ZNC à tout moment, cependant, vos paramètres seront réinitialisés.","UPDATE":"Lancer mise à jour","UPLOAD":"Upload","UPTIME":"Uptime","USED":"Utilisé","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"Voir les détails additionnels","WEB_CONSOLE":"Console Web","WEBDAV":"WebDAV (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP défini par le groupe de travail Internet Engineering Task Force du même nom.","X2GO":"X2Go est un logiciel de bureau à distance open source pour Linux qui utilise le protocole de technologie NX.","YOUR_DISK_STATUS":"Statut Du Disque","ZNC":"ZNC est un bouncer IRC sous licence GPL. Celui-ci sera connecté en permanence à vos salons de discussions et fera office de passerelle entre votre client et vos serveurs IRC."}')},7893:e=>{e.exports=JSON.parse('{"AGREE":"我明白,继续!","APP_INSTALL_TXT":"使用此命令安装软件","APP_UNINSTALL_TXT":"使用此命令卸载软件","APP_UPGRADE_TXT":"使用此命令升级软件","ART":"Auto Remove Torrents 可以根据你设置的策略自动地删除种子, 无需担心磁盘空间问题.","AUTODL":"AutoDL-iRSSi 是一个 irssi 插件, 用于监视 IRC 发布频道并且可以根据用户定义的过滤器下载.","AVAILABILITY":"状态","All time":"所有时间","BANDWIDTH_DATA":"带宽数据","BOX":"仅限 BOX","BOX_TOOLTIP_ART":"从 Web 控制台输入: box install art 安装此功能","BOX_TOOLTIP_DENYHOSTS":"从 Web 控制台输入: box install denyhosts 安装此功能","BOX_TOOLTIP_FAIL2BAN":"从 Web 控制台输入: box install fail2ban 启用此功能","BOX_TOOLTIP_H5AI":"从 Web 控制台输入: box install h5ai 安装此功能","BOX_TOOLTIP_LECERT":"从 Web 控制台输入: box install lecert 自动签发 HTTPS 证书","BOX_TOOLTIP_ZNC":"从 Web 控制台输入: box install znc 访问此功能","BTSYNC":"BitTorrent 公司的 BitTorrent Sync 是一个专有的对等文件同步工具.","BW_SELECT":"流量排序","CACHED_MEMORY_BUFFERS_TXT":"缓冲区 {{buffered}}","CACHED_MEMORY_TITLE":"高速缓存使用情况","CACHED_MEMORY_USAGE_TXT":"高速缓存已使用 {{cached}}","CANCEL":"取消","CHANGEINTERFACE_TXT":"使用此命令设置仪表盘统计的网口.","CHANGEUSERPASS_TXT":"在SSH中输入此命令来更改所需的用户密码.","CIFS":"服务器消息块(SMB),又称网络文件共享系统(CIFS),使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源.","CLEAN_LOG_TXT":"使用此命令清理安装日志","CLEAN_MEM_TXT":"如果你决定清除系统的缓存, 请以root身份使用上述命令","CLEAR_CACHE":"清除缓存","CLEAR_LOCK":"清除锁定","CLEAR_LOCK_TXT":"检测到软件安装锁. 如果上次安装过程发生意外, 可以点击按钮解除锁定","CLOSE_REFRESH":"关闭 & 刷新","COMPARE_COMMITS":"将当前状态与最新提交进行比较。","CPU_STATUS":"CPU状态","CURRENT_COMMIT":"查看你当前的提交状态","CURRENT_VERSIONS_CHANGELOG":"查看你当前的版本更新日志。","DAYS_L":"天","DELUGE":"Deluge 是一款轻量级的免费软件, 跨平台的BitTorrent客户端.","DENYHOSTS":"DenyHosts 是针对 SSH 服务器的一个基于日志的入侵预防安全工具, 它使用Python编写.","DETAILS":"详情","DEV_REPO_TXT":"你当前在 QuickBox {{branch}} 分支","DISABLED":"禁用","DISKTEST_TXT":"输入此命令来对磁盘进行一个快速的读写测试","DISK_SPACE":"磁盘空间","DOWNLOAD":"下载","DOWNLOADS":"下载","DTORRENTS_TITLE":"deluge的种子","EMBY":"Emby 是一个主从式架构的媒体服务器软件,可以用来整理服务器上的视频和音频,并将音频和视频流式传输到客户端设备.","ENABLED":"已启用","ENABLE_DISABLE_SERVICES":"启用/禁用","ESSENTIAL_USER_COMMANDS":"基本用户命令","FAIL2BAN":"Fail2Ban 是一种入侵防御软件框架, 可以保护计算机和服务器免受暴力攻击的威胁.","FILEBROWSER":"File Browser 提供了一个指定目录中的文件管理界面, 可以用于上传, 删除,预览, 重命名以及编辑. 它允许你创建多个用户, 每个用户可以拥有自己的目录.","FILEBROWSEREE":"File Browser Enhanced 是一个基于 Docker 的增强版 File Browser, 由荒野无灯开发.","FIX_DPKG_TXT":"使用此命令解除软件安装 lock","FLEXGET":"FlexGet 是一款适用于所有媒体的多功能自动化工具. 它支持 torrents, nzbs, podcasts, comics, TV, movies, RSS, HTML, CSV, 等形式.","FLOOD":"Flood 是 rtorrent 的另一个 Web 界面. 它使用 Node.js 服务与 rTorrent API 交互, 存储数据, 并且提供 Web UI.","FREE":"空余","H5AI":"适用于 Apache httpd、lighttpd 和 nginx 的现代 HTTP Web 服务器索引.","HELP_COMMANDS":"帮助命令 & 更多","HOURS_L":"小时","INSTALL":"安装","INSTALLED":"已安装","INSTALLING":"安装中","ISSUE_REPORT_TXT":"报告问题","In":"下载量","In_AVG":"平均下行","JELLYFIN":"Jellyfin 是一套多媒体应用程序软件套装,旨在组织、管理和共享数字媒体文件,是Emby的一个自由开源分叉.","LANG_SELECT":"选择语言","LATEST_COMMIT":"最新","LECERT":"Let\'s Encrypt 是一个免费, 自动化的和开放的证书颁发机构 (CA), 由 ISRG (Internet Security Research Group) 运营.","Last 12 months":"过去12个月","Last 30 days":"过去30天","MAIN_MENU":"主菜单","MINUTES_L":"分","MOUNT_POINT":"挂载点","NAME":"名称","NETDATA":"Netdata 分布式的, 实时的适用于应用与系统的性能与健康情况的监视器.","NETWORK":"网络","NFS":"网络文件系统(NFS)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由Sun微系统开发,于1984年发布.","NOVNC":"noVNC 不仅是一个 VNC 客户端 JavaScript 库, 也是一个利用该库构建的应用程序. noVNC 可以在任何的现代浏览器包括移动浏览器 (iOS 与 Android) 中运行.","OPENVPN":"OpenVPN是一个用于创建虚拟私人网络加密通道的软件包,最早由James Yonan编写. OpenVPN允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证.","Out":"上传量","Out_AVG":"平均上行","PACKAGE_MANAGEMENT_CENTER":"组件管理中心","PANEL_CONFIG":"面板配置","PANEL_RESET":"重置面板","PERCENTAGE_TXT":"已使用 {{used}}% 的磁盘空间","PHYSICAL_MEMORY_IDLE_TXT":"空闲","PHYSICAL_MEMORY_TITLE":"物理内存使用情况","PHYSICAL_MEMORY_USED_TXT":"已使用","PLEX":"Plex 可让你将内容传输到任何支持 Plex 的设备.","PLUGINS":"插件","PLUGIN_MENU":"插件菜单","PMC_NOTICE_TXT":"注意! 这些选项与启用和禁用软件组件不同, 功能是安装或者卸载软件","PMENU_NOTICE_TXT":"只需点击插件名称即可简单安装和删除ruTorrent插件","QBITTORRENT":"qBittorrent 是一款免费可靠的 P2P BitTorrent 客户端, 先进的多平台 BitTorrent 客户端, 具有良好的 Qt 用户界面以及用于远程控制并且集成搜索引擎的 Web 用户界面.","QBITTORRENTCLIENTBLOCKER":"qBittorrent-ClientBlocker 是一款适用于 qBittorrent 的客户端屏蔽器, 默认屏蔽包括但不限于迅雷等客户端, 支持 qBittorrent 4.1 及以上版本.","QTORRENTS_TITLE":"qBittorrent的种子","QUICKBOX_COMMIT":"当前QuickBox的提交 - ","QUICK_SYSTEM_TIPS":"快速系统提示","RCLONE":"Rclone是一个开源、多线程、命令行界面的计算机程序, 可用于管理云存储。其功能包括档案同步、文件传输、加密、缓存和挂载。rclone支持包括Amazon S3和Google 云端硬盘在内等共五十多种云存储服务.","REAL_MEMORY_FREE_TXT":"实际内存空闲 {{free}}","REAL_MEMORY_TITLE":"实际内存使用情况","REAL_MEMORY_USAGE_TXT":"实际内存已使用 {{used}}","RECENT_UPDATES":"近期更新","REFRESH":"刷新","RESTART_SERVICES":"重启服务","RPLUGIN_MENU":"ruTorrent插件菜单","RTORRENT":"rTorrent为一款使用C++便携的纯文本环境BT客户端,基于Unix的ncurses和libTorrent(不要与libtorrent混淆)。开发者的目标是“一个侧重于高性能的良好代码。”.","RTORRENTS_TITLE":"rtorrent的种子","RUTORRENT":"ruTorrent 是一个受欢迎的 BitTorrent 客户端 rTorrent 的前端. 主要特性: 轻量级的服务端, 因此可以被安装在一些较老以及较地段的服务器上, 甚至可以安装在一些 SOHO 路由器上; 可扩展, 它拥有很多插件, 每个人都可以创建自己的插件; 带有 club-QuickBox 皮肤.","Recent hours":"最近几小时","SCREEN_RTORRNENT_TXT":"允许用户从SSH重新启动/重新挂载rtorrent","SECONDS_L":"秒","SEEDBOX_COMMANDS":"Seedbox 命令","SERVER_LOAD":"服务器负载","SERVICE_CONTROL_CENTER":"服务控制中心","SERVICE_STATUS":"系统状态","SET_LANG_TXT":"使用此命令设置仪表盘语言.","SIZE":"大小","SL_TXT":"服务器当前的平均负载","SPEEDTEST":"一个轻量化的开源网速测试页面","SWAP_IDLE_TXT":"空闲 {{free}}","SWAP_TITLE":"Swap使用情况","SWAP_TOTAL_TXT":"SWAP区域","SWAP_USED_TXT":"已使用 {{used}}","SWITCH_DEV":"切换到 development 分支","SWITCH_MASTER":"切换到 master 分支","SABNZBD":"免费和简单的二进制新闻阅读器","SYNCTHING":"开源的 BitTorrent 文件同步软件.","SYSTEM_RAM_STATUS":"系统内存状态","SYSTEM_RESPONSE_TITLE":"系统响应","SYS_UPGRADE_TXT":"使用此命令升级 QuickBox Lite 系统.","Summary":"概要","THEME_CHANGE_TXT":"即将改变主题. 如果主题在刷新后没有正确显示, 则可能需要清除浏览器缓存并重试.","THEME_SELECT":"选择主题","TORRENTS_LOADED":"总计加载了 {{loaded}} 个种子","TOTAL_L":"总计 {{total}}","TOTAL_RAM":"系统内存总计","TRANSMISSION":"Transmission 被设计为功能强大而易于使用的客户端. 它的默认设置即可直接运行, 只需要简单的点击就可以配置例如如监视目录,不良 peers 拦截列表和 Web 界面等高级功能. Ubuntu 以它作为默认的 BitTorrent 客户端, 其中最重要的理由就是它简单易学.","TROUBLESHOOT_TXT":"使用此命令生成日志以进行故障排查","TRTORRENTS_TITLE":"Transmission的种子","This day":"本天","This hour":"本小时","This month":"本月","Top 10 days":"最高10天","Total":"合计","UNINSTALLED":"已卸载","UNINSTALLING":"卸载中","UNINSTALLING_TITLE":"卸载","UNINSTALLING_TXT_1":"请稍候","UNINSTALLING_TXT_2":"正在从你的系统中卸载。","UNINSTALL_AUTODL_TXT":"即将从系统中卸载 AutoDL-iRSSi.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 AutoDL-iRSSi, 但是, 你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_BTSYNC_TXT":"即将从系统中卸载 BitTorrent Sync.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 BitTorrent Sync, 但是, 你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_CIFS_TXT":"即将从系统中卸载 Samba Server.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 Samba Server, 但是, 你的文件夹设置将被重置为默认值.","UNINSTALL_DELUGE_TXT":"即将从系统中卸载 Deluge.

这将彻底删除所有用户的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 Deluge, 但是, 你的存储路径和链接文件夹设置将被重置为默认值.","UNINSTALL_EMBY_TXT":"即将从系统中卸载 Emby Media Server.

这将完全删除你的所有配置和库设置...这个操作是不可逆的.

你可以随时重新安装 Emby, 但是, 你的磁带库设置将被重置为默认值.","UNINSTALL_FILEBROWSEREE_TXT":"即将从系统中卸载 File Browser Enhanced.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 File Browser, 但是你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_FILEBROWSER_TXT":"即将从系统中卸载 File Browser.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 File Browser, 但是你的存储路径和链接的文件夹设置将被重置为默认值.","UNINSTALL_FLEXGET_TXT":"即将从系统中卸载 FlexGet.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 FlexGet, 但是你的设置将被重置为默认值.","UNINSTALL_FLOOD_TXT":"即将从系统中卸载 Flood.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 Flood, 但是你的设置将被重置为默认值.","UNINSTALL_JELLYFIN_TXT":"即将从系统中卸载 Jellyfin Media Server.

这将完全删除你的所有配置和库设置...这个操作是不可逆的.

你可以随时重新安装 Jellyfin, 但是, 你的磁带库设置将被重置为默认值.","UNINSTALL_NETDATA_TXT":"即将从系统中卸载 Netdata.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 Netdata, 但是你的设置将被重置为默认值.","UNINSTALL_NFS_TXT":"即将从系统中卸载 NFS Server.

这将完全删除你的所有配置和共享文件夹设置...这个动作是不可逆的.

你可以随时重新安装 NFS Server, 但是, 你的文件夹设置将被重置为默认值.","UNINSTALL_NOVNC_TXT":"即将从系统中卸载 noVNC.

这将完全删除你的所有配置和共享文件夹设置...此操作是不可逆转的.

你可以随时重新安装 noVNC, 但是你的设置将被重置为默认值.","UNINSTALL_OPENVPN_TXT":"即将从系统中卸载 OpenVPN.

这将完全删除你的所有配置...此操作是不可逆转的.

你可以随时重新安装 OpenVPN, 但是你的设置将被重置为默认值.","UNINSTALL_PLEX_TXT":"即将从系统中卸载 Plex Media Server.

这将完全删除你的所有配置和库设置...这个操作是不可逆的.

你可以随时重新安装 Plex, 但是, 你的磁带库设置将被重置为默认值.","UNINSTALL_QBITTORRENT_TXT":"即将从系统中卸载 qBittorrent.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 qBittorrent, 但是你的配置设置将被重置为默认值.","UNINSTALL_QBITTORRENTCLIENTBLOCKER_TXT":"即将从系统中卸载 qBittorrent-ClientBlocker.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 qBittorrent-ClientBlocker, 但是你的配置设置将被重置为默认值.","UNINSTALL_RCLONE_TXT":"即将从系统中卸载 Rclone.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 Rclone, 但是, 但是你的配置设置将被重置为默认值.","UNINSTALL_RTORRENT_TXT":"即将从系统中卸载 rTorrent.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 rTorrent, 但是你的配置设置将被重置为默认值.","UNINSTALL_RUTORRENT_TXT":"即将从系统中卸载 ruTorrent.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 ruTorrent, 但是你的配置设置将被重置为默认值.","UNINSTALL_SABNZBD_TXT":"即将从系统中卸载 SABnzbd.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 SABnzbd, 但是你的配置设置将被重置为默认值.","UNINSTALL_SPEEDTEST_TXT":"即将从系统中卸载 SpeedTest.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 SpeedTest, 但是你的配置设置将被重置为默认值.","UNINSTALL_SYNCTHING_TXT":"即将从系统中卸载 Syncthing.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 Syncthing, 但是你的配置设置将被重置为默认值.","UNINSTALL_TITLE":"卸载","UNINSTALL_TRANSMISSION_TXT":"即将从系统中卸载 Transmission.

这将完全删除你的所有配置设置...这个动作是不可逆的.

你可以随时重新安装 Transmission, 但是你的配置设置将被重置为默认值.","UNINSTALL_WEBDAV_TXT":"即将从系统中卸载 WebDAV.

这将完全删除你的所有配置设置...这个操作是不可逆的.

你可以随时重新安装 WebDAV, 但是, 但是你的配置设置将被重置为默认值.","UNINSTALL_X2GO_TXT":"即将从系统中卸载 x2go.

这将彻底清除系统中的 x2goserver 和 xfce4 桌面环境.","UNINSTALL_ZNC_TXT":"即将从系统中卸载 ZNC.

这将完全删除你的所有配置和设置...这个动作是不可逆的.

你可以随时重新安装 ZNC, 但是你的设置将被重置为默认值.","UPDATE":"运行更新程序","UPLOAD":"上传","UPTIME":"正常运行时间","USED":"已使用","VIEW_ADDITIONAL_BANDWIDTH_DETAILS":"查看额外的带宽详情","WEB_CONSOLE":"Web控制台","WEBDAV":"基于Web的分布式编写和版本控制 (WebDAV) 是超文本传输协议 (HTTP)的扩展, 有利于用户间协同编辑和管理存储在万维网服务器文档.","X2GO":"X2Go 是一款使用 NX 技术协议的 Linux 开源远程桌面软件.","YOUR_DISK_STATUS":"磁盘状态","ZNC":"ZNC 是一个 IRC 网络辅助软件. 它可以将客户端从实际的 IRC 服务器以及选定的频道中分离出来."}')}},t={};(function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={exports:{}};return e[i].call(a.exports,a,a.exports,r),a.exports})(8173)})(); \ No newline at end of file diff --git a/setup/dashboard/ws/eslint.config.mjs b/setup/dashboard/ws/eslint.config.mjs new file mode 100644 index 00000000..42596c95 --- /dev/null +++ b/setup/dashboard/ws/eslint.config.mjs @@ -0,0 +1,171 @@ +// @ts-check + +import globals from "globals"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import tseslint from "typescript-eslint"; +import eslint from "@eslint/js"; +import stylisticJs from "@stylistic/eslint-plugin-js"; +import stylisticTs from "@stylistic/eslint-plugin-ts"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export default tseslint.config( + { + ignores: ["**/build", "**/dist", "**/*.js"], + }, + { + plugins: { + "@stylistic": stylisticJs, + "@stylistic/ts": stylisticTs, + }, + }, + eslint.configs.recommended, + // ...tseslint.configs.recommended, + ...tseslint.configs.strict, + // ...tseslint.configs.strictTypeChecked, + ...tseslint.configs.stylistic, + { + files: ["**/*.ts", "**/*.tsx"], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + ecmaVersion: 5, + sourceType: "module", + parserOptions: { + // projectService: true, + project: "./tsconfig.json", + tsconfigRootDir: __dirname + }, + }, + rules: { + "@stylistic/indent": [ + "error", + 4, + { + SwitchCase: 1, + }, + ], + "@stylistic/quotes": [ + "error", + "double", + { + avoidEscape: true, + }, + ], + "@stylistic/semi": ["error", "always"], + "@stylistic/ts/member-delimiter-style": [ + "error", + { + multiline: { + delimiter: "semi", + requireLast: true, + }, + + singleline: { + delimiter: "semi", + requireLast: false, + }, + }, + ], + "@stylistic/ts/type-annotation-spacing": "error", + + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/no-empty-function": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "error", + // "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-non-null-assertion": "error", + // "@typescript-eslint/no-parameter-properties": "off", + // "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-qualifier": "error", + // "@typescript-eslint/no-unnecessary-type-assertion": "off", + // "@typescript-eslint/no-use-before-define": "off", + // "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/prefer-for-of": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/unbound-method": "error", + "@typescript-eslint/unified-signatures": "error", + "@typescript-eslint/adjacent-overload-signatures": "off", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/no-restricted-types": "error", + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/explicit-member-accessibility": [ + "error", + { + accessibility: "explicit", + }, + ], + // "@typescript-eslint/interface-name-prefix": "off", + + camelcase: "error", + "class-methods-use-this": "error", + complexity: "error", + "constructor-super": "error", + curly: "error", + "default-case": "off", + "dot-notation": "off", + "eol-last": "error", + eqeqeq: ["error", "always"], + "guard-for-in": "error", + "id-blacklist": ["error", "any"], + "id-match": "error", + "import/no-internal-modules": "off", + "import/order": "off", + "linebreak-style": "off", + "max-classes-per-file": "off", + "max-len": "off", + "no-bitwise": "off", + "no-caller": "error", + "no-cond-assign": "error", + "no-console": "off", + "no-debugger": "error", + "no-duplicate-case": "error", + "no-duplicate-imports": "error", + "no-fallthrough": "error", + "no-invalid-this": "off", + "no-magic-numbers": "off", + "no-multiple-empty-lines": "error", + "no-new-func": "error", + "no-new-wrappers": "error", + "no-null/no-null": "off", + "no-redeclare": "error", + "no-shadow": "off", + + "padding-line-between-statements": [ + "off", + { + blankLine: "always", + prev: "*", + next: "return", + }, + ], + + "prefer-const": "error", + "prefer-object-spread": "error", + "quote-props": ["error", "consistent-as-needed"], + radix: "error", + + "space-before-function-paren": [ + "error", + { + anonymous: "never", + asyncArrow: "always", + named: "never", + }, + ], + + "spaced-comment": ["error", "always"], + "use-isnan": "error", + "valid-typeof": "off", + "space-in-parens": "off", + "comma-dangle": ["error", "always-multiline"], + }, + } +); diff --git a/setup/dashboard/ws/package-lock.json b/setup/dashboard/ws/package-lock.json index 6bd345c3..9f4e24bc 100644 --- a/setup/dashboard/ws/package-lock.json +++ b/setup/dashboard/ws/package-lock.json @@ -9,53 +9,58 @@ "version": "1.0.0", "license": "GPL-3.0-or-later", "dependencies": { - "axios": "^1.6.8", + "axios": "^1.7.5", "bignumber.js": "^9.1.2", "express": "^4.19.2", "lodash": "^4.17.21", - "make-plural": "^7.3.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "make-plural": "^7.4.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "socket.io": "^4.7.5", - "systeminformation": "^5.22.6", + "systeminformation": "^5.23.5", "which": "^4.0.0", - "ws": "^8.16.0" + "ws": "^8.18.0" }, "devDependencies": { - "@types/chai": "^4.3.14", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "@stylistic/eslint-plugin-js": "^2.6.4", + "@stylistic/eslint-plugin-ts": "^2.6.4", + "@types/chai": "^4.3.17", "@types/express": "^4.17.21", - "@types/lodash": "^4.17.0", - "@types/mocha": "^10.0.6", - "@types/node": "^20.12.2", - "@types/react": "^18.2.73", - "@types/react-dom": "^18.2.23", + "@types/lodash": "^4.17.7", + "@types/mocha": "^10.0.7", + "@types/node": "^22.5.0", + "@types/react": "^18.3.4", + "@types/react-dom": "^18.3.0", "@types/webpack-node-externals": "^3.0.4", - "@types/which": "^3.0.3", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", + "@types/which": "^3.0.4", + "@types/ws": "^8.5.12", + "@typescript-eslint/parser": "^8.2.0", "bun-types": "latest", - "chai": "^5.1.0", - "eslint": "^8.57.0", - "eslint-webpack-plugin": "^4.1.0", - "http-proxy-middleware": "^2.0.6", - "mocha": "^10.4.0", + "chai": "^5.1.1", + "eslint": "^9.9.1", + "eslint-webpack-plugin": "^4.2.0", + "globals": "^15.9.0", + "http-proxy-middleware": "^3.0.0", + "mocha": "^10.7.3", "socket.io-client": "^4.7.5", - "source-map-loader": "^4.0.2", + "source-map-loader": "^5.0.0", "terser-webpack-plugin": "^5.3.10", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", - "tsx": "^4.7.1", - "typescript": "^5.4.3", - "webpack": "^5.91.0", + "tsx": "^4.18.0", + "typescript": "^5.5.4", + "typescript-eslint": "^8.2.0", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4", - "webpack-merge": "^5.10.0", + "webpack-merge": "^6.0.1", "webpack-node-externals": "^3.0.0", "webpackbar": "^6.0.1" }, "optionalDependencies": { - "bufferutil": "^4.0.5", - "utf-8-validate": "^5.0.7" + "bufferutil": "^4.0.8", + "utf-8-validate": "^6.0.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -98,10 +103,74 @@ "node": ">=10.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", "cpu": [ "arm64" ], @@ -111,7 +180,311 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -130,41 +503,32 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@eslint/config-array/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -178,39 +542,39 @@ } } }, - "node_modules/@eslint/eslintrc/node_modules/ms": { + "node_modules/@eslint/config-array/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -224,12 +588,42 @@ } } }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/@eslint/js": { + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -243,11 +637,18 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@jest/schemas": { "version": "29.6.3", @@ -382,6 +783,73 @@ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "node_modules/@stylistic/eslint-plugin-js": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.4.tgz", + "integrity": "sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==", + "dev": true, + "dependencies": { + "@types/eslint": "^9.6.0", + "acorn": "^8.12.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-js/node_modules/@types/eslint": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@stylistic/eslint-plugin-js/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.4.tgz", + "integrity": "sha512-yxL8Hj6WkObw1jfiLpBzKy5yfxY6vwlwO4miq34ySErUjUecPV5jxfVbOe4q1QDPKemQGPq93v7sAQS5PzM8lA==", + "dev": true, + "dependencies": { + "@stylistic/eslint-plugin-js": "2.6.4", + "@types/eslint": "^9.6.0", + "@typescript-eslint/utils": "^8.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/@types/eslint": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", @@ -417,9 +885,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz", - "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==", + "version": "4.3.17", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", "dev": true }, "node_modules/@types/connect": { @@ -445,25 +913,15 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", - "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", + "version": "8.56.11", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.11.tgz", + "integrity": "sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==", "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -494,9 +952,9 @@ } }, "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -533,9 +991,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", - "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", "dev": true }, "node_modules/@types/mime": { @@ -545,17 +1003,17 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", - "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", "dev": true }, "node_modules/@types/node": { - "version": "20.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", - "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/prop-types": { @@ -577,9 +1035,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.73", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.73.tgz", - "integrity": "sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==", + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -587,20 +1045,14 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.23", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.23.tgz", - "integrity": "sha512-ZQ71wgGOTmDYpnav2knkjr3qXdAFu0vsk8Ci5w3pGAIdj7/kKAyn+VsQDhXsmzzzepAiI9leWMmubXz690AI/A==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "dependencies": { "@types/react": "*" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/serve-static": { "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", @@ -622,15 +1074,15 @@ } }, "node_modules/@types/which": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.3.tgz", - "integrity": "sha512-2C1+XoY0huExTbs8MQv1DuS5FS86+SEjdM9F/+GS61gg5Hqbtj8ZiDSx8MfWcyei907fIPbfPGCOrNUTnVHY1g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.4.tgz", + "integrity": "sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==", "dev": true }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -652,33 +1104,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz", - "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.2.0.tgz", + "integrity": "sha512-02tJIs655em7fvt9gps/+4k4OsKULYGtLBPJfOsmOq1+3cdClYiF0+d6mHu6qDnTcg88wJBkcPLpQhq7FyDz0A==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/type-utils": "7.4.0", - "@typescript-eslint/utils": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/type-utils": "8.2.0", + "@typescript-eslint/utils": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -686,50 +1136,27 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.4.0.tgz", - "integrity": "sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.2.0.tgz", + "integrity": "sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/typescript-estree": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/typescript-estree": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -738,9 +1165,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -761,16 +1188,16 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", - "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz", + "integrity": "sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0" + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -778,26 +1205,23 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz", - "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.2.0.tgz", + "integrity": "sha512-g1CfXGFMQdT5S+0PSO0fvGXUaiSkl73U1n9LTK5aRAFnPlJ8dLKkXr4AaLFvPedW8lVDoMgLLE3JN98ZZfsj0w==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.4.0", - "@typescript-eslint/utils": "7.4.0", + "@typescript-eslint/typescript-estree": "8.2.0", + "@typescript-eslint/utils": "8.2.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -805,9 +1229,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -828,12 +1252,12 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz", + "integrity": "sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==", "dev": true, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -841,22 +1265,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", - "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz", + "integrity": "sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/visitor-keys": "8.2.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -878,9 +1302,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -895,9 +1319,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -916,53 +1340,44 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", - "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.2.0.tgz", + "integrity": "sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/typescript-estree": "7.4.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "8.2.0", + "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/typescript-estree": "8.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz", + "integrity": "sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "8.2.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -1197,9 +1612,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1208,10 +1623,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -1300,9 +1715,9 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { "node": ">=6" @@ -1413,9 +1828,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -1487,12 +1902,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1543,9 +1958,9 @@ "dev": true }, "node_modules/bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.8.tgz", + "integrity": "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -1629,13 +2044,13 @@ ] }, "node_modules/chai": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.0.tgz", - "integrity": "sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "dependencies": { "assertion-error": "^2.0.1", - "check-error": "^2.0.0", + "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" @@ -1661,9 +2076,9 @@ } }, "node_modules/check-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz", - "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "engines": { "node": ">= 16" @@ -1789,7 +2204,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "node_modules/consola": { @@ -1988,9 +2403,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -2008,18 +2423,6 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2046,9 +2449,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.2.tgz", - "integrity": "sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -2059,22 +2462,22 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" } }, "node_modules/engine.io-client": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", - "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", + "ws": "~8.17.1", "xmlhttprequest-ssl": "~2.0.0" } }, @@ -2102,16 +2505,16 @@ "dev": true }, "node_modules/engine.io-client/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -2160,15 +2563,15 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/engine.io/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -2180,9 +2583,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -2230,41 +2633,42 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "node_modules/escalade": { @@ -2294,41 +2698,37 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -2342,10 +2742,18 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-scope": { @@ -2374,12 +2782,12 @@ } }, "node_modules/eslint-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-C3wAG2jyockIhN0YRLuKieKj2nx/gnE/VHmoHemD5ifnAtY6ZU+jNPfzPoX4Zd6RIbUyWTiZUh/ofUlBhoAX7w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-rsfpFQ01AWQbqtjgPRr2usVRxhWDuG0YDYcG8DJOteD3EFnpeuYuOwk0PQiN7PRBTqS6ElNdtPZPggj8If9WnA==", "dev": true, "dependencies": { - "@types/eslint": "^8.56.5", + "@types/eslint": "^8.56.10", "jest-worker": "^29.7.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -2393,7 +2801,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "eslint": "^8.0.0", + "eslint": "^8.0.0 || ^9.0.0", "webpack": "^5.0.0" } }, @@ -2498,16 +2906,28 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2541,17 +2961,29 @@ "dev": true }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2755,21 +3187,21 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -2821,22 +3253,22 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { @@ -2952,9 +3384,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -2963,26 +3395,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -3002,15 +3414,12 @@ "dev": true }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz", + "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3163,29 +3572,45 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.8", + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "micromatch": "^4.0.5" }, "engines": { - "node": ">=12.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" }, - "peerDependencies": { - "@types/express": "^4.17.13" + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { - "@types/express": { + "supports-color": { "optional": true } } }, + "node_modules/http-proxy-middleware/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3198,9 +3623,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -3470,6 +3895,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -3488,6 +3919,15 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -3581,18 +4021,6 @@ "get-func-name": "^2.0.1" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -3600,9 +4028,9 @@ "dev": true }, "node_modules/make-plural": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-7.3.0.tgz", - "integrity": "sha512-/K3BC0KIsO+WK2i94LkMPv3wslMrazrQhfi5We9fMbLlLjzoOSJWr7TAdupLlDWaJcWxwoNosBkhFDejiu5VDw==" + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-7.4.0.tgz", + "integrity": "sha512-4/gC9KVNTV6pvYg2gFeQYTW3mWaoJt7WZE5vrp1KnQDgW92JtYZnzmZT81oj/dUTqAIu0ufI2x3dkgu3bB1tYg==" }, "node_modules/markdown-table": { "version": "2.0.0", @@ -3654,12 +4082,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -3709,31 +4137,31 @@ } }, "node_modules/mocha": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", - "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "8.1.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -3753,9 +4181,9 @@ } }, "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -3795,9 +4223,9 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -3999,15 +4427,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -4238,9 +4657,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -4249,15 +4668,15 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/readdirp": { @@ -4383,21 +4802,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4446,9 +4850,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -4472,13 +4876,10 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4515,9 +4916,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -4635,23 +5036,45 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { - "ws": "~8.11.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -4773,16 +5196,16 @@ } }, "node_modules/source-map-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.2.tgz", - "integrity": "sha512-oYwAqCuL0OZhBoSgmdrLa7mv9MjommVMiQIWgcztf+eS4+8BfcUee6nenFnDhKOhzAVnk5gpZdfnz1iiBv+5sg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "dependencies": { "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -4891,9 +5314,9 @@ } }, "node_modules/systeminformation": { - "version": "5.22.6", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.6.tgz", - "integrity": "sha512-hUTQX+bRgIFbv1T/z251NtwGwNIeSyWURnT2BGnsYu6dQNbkiBl4oAwk50acVfITFq1Zvb8KDNgibQK9uGlUGg==", + "version": "5.23.5", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.23.5.tgz", + "integrity": "sha512-PEpJwhRYxZgBCAlWZhWIgfMTjXLqfcaZ1pJsJn9snWNfBW/Z1YQg1mbIUSWrEV3ErAHF7l/OoVLQeaZDlPzkpA==", "os": [ "darwin", "linux", @@ -4976,15 +5399,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5105,13 +5519,13 @@ } }, "node_modules/tsx": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", - "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.18.0.tgz", + "integrity": "sha512-a1jaKBSVQkd6yEc1/NI7G6yHFfefIcuf3QJST7ZEyn4oQnxLYrZR5uZAM8UrwUa3Ge8suiZHcNS1gNrEvmobqg==", "dev": true, "dependencies": { - "esbuild": "~0.19.10", - "get-tsconfig": "^4.7.2" + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" }, "bin": { "tsx": "dist/cli.mjs" @@ -5135,18 +5549,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -5160,9 +5562,9 @@ } }, "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5172,10 +5574,33 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.2.0.tgz", + "integrity": "sha512-DmnqaPcML0xYwUzgNbM1XaKXpEb7BShYf2P1tkUmmcl8hyeG7Pj08Er7R9bNy6AufabywzJcOybQAtnD/c9DGw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.2.0", + "@typescript-eslint/parser": "8.2.0", + "@typescript-eslint/utils": "8.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/unpipe": { "version": "1.0.0", @@ -5225,9 +5650,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", - "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.4.tgz", + "integrity": "sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -5273,21 +5698,20 @@ } }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -5373,7 +5797,7 @@ "node": ">=14" } }, - "node_modules/webpack-merge": { + "node_modules/webpack-cli/node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", @@ -5387,6 +5811,20 @@ "node": ">=10.0.0" } }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/webpack-node-externals": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", @@ -5442,15 +5880,15 @@ } }, "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "node_modules/wrap-ansi": { @@ -5477,9 +5915,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -5514,12 +5952,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -5539,9 +5971,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { "node": ">=10" diff --git a/setup/dashboard/ws/package.json b/setup/dashboard/ws/package.json index a5f50b2a..db996711 100644 --- a/setup/dashboard/ws/package.json +++ b/setup/dashboard/ws/package.json @@ -7,7 +7,7 @@ "build": "webpack --config build/webpack.config.js", "test": "mocha -r tsx --extensions ts 'tests/**/*.ts'", "check-type": "tsc --noemit", - "eslint": "eslint . --ext .ts --ext .tsx", + "eslint": "eslint .", "lint": "npm run check-type && npm run eslint", "test/server": "tsx src/server.tsx", "test/client": "tsx tests/client.js", @@ -17,52 +17,57 @@ "author": "TautCony", "license": "GPL-3.0-or-later", "dependencies": { - "axios": "^1.6.8", + "axios": "^1.7.5", "bignumber.js": "^9.1.2", "express": "^4.19.2", "lodash": "^4.17.21", - "make-plural": "^7.3.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "make-plural": "^7.4.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "socket.io": "^4.7.5", - "systeminformation": "^5.22.6", + "systeminformation": "^5.23.5", "which": "^4.0.0", - "ws": "^8.16.0" + "ws": "^8.18.0" }, "devDependencies": { - "@types/chai": "^4.3.14", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.9.1", + "@stylistic/eslint-plugin-js": "^2.6.4", + "@stylistic/eslint-plugin-ts": "^2.6.4", + "@types/chai": "^4.3.17", "@types/express": "^4.17.21", - "@types/lodash": "^4.17.0", - "@types/mocha": "^10.0.6", - "@types/node": "^20.12.2", - "@types/react": "^18.2.73", - "@types/react-dom": "^18.2.23", + "@types/lodash": "^4.17.7", + "@types/mocha": "^10.0.7", + "@types/node": "^22.5.0", + "@types/react": "^18.3.4", + "@types/react-dom": "^18.3.0", "@types/webpack-node-externals": "^3.0.4", - "@types/which": "^3.0.3", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", + "@types/which": "^3.0.4", + "@types/ws": "^8.5.12", + "@typescript-eslint/parser": "^8.2.0", "bun-types": "latest", - "chai": "^5.1.0", - "eslint": "^8.57.0", - "eslint-webpack-plugin": "^4.1.0", - "http-proxy-middleware": "^2.0.6", - "mocha": "^10.4.0", + "chai": "^5.1.1", + "eslint": "^9.9.1", + "eslint-webpack-plugin": "^4.2.0", + "globals": "^15.9.0", + "http-proxy-middleware": "^3.0.0", + "mocha": "^10.7.3", "socket.io-client": "^4.7.5", - "source-map-loader": "^4.0.2", + "source-map-loader": "^5.0.0", "terser-webpack-plugin": "^5.3.10", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", - "tsx": "^4.7.1", - "typescript": "^5.4.3", - "webpack": "^5.91.0", + "tsx": "^4.18.0", + "typescript": "^5.5.4", + "typescript-eslint": "^8.2.0", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4", - "webpack-merge": "^5.10.0", + "webpack-merge": "^6.0.1", "webpack-node-externals": "^3.0.0", "webpackbar": "^6.0.1" }, "optionalDependencies": { - "bufferutil": "^4.0.5", - "utf-8-validate": "^5.0.7" + "bufferutil": "^4.0.8", + "utf-8-validate": "^6.0.4" } } diff --git a/setup/dashboard/ws/src/constant.ts b/setup/dashboard/ws/src/constant.ts index 994a9305..3d5565fc 100644 --- a/setup/dashboard/ws/src/constant.ts +++ b/setup/dashboard/ws/src/constant.ts @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later import { existsSync, readFileSync } from "fs"; +// eslint-disable-next-line @typescript-eslint/no-extraneous-class export default class Constant { public static EVENT_CONNECTION = "connection"; public static EVENT_DISCONNECT = "disconnect"; diff --git a/setup/dashboard/ws/src/handler/exec.ts b/setup/dashboard/ws/src/handler/exec.ts index 3a68518f..a61a35f7 100644 --- a/setup/dashboard/ws/src/handler/exec.ts +++ b/setup/dashboard/ws/src/handler/exec.ts @@ -68,8 +68,6 @@ const execHandler = async (payload: string, client: Socket) => { }); }; -// eslint-disable-next-line no-unused-vars -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default (client: Socket, next?: (err?: Error) => void) => { client.on(Constant.EVENT_EXEC, payload => execHandler(payload, client)); if (next) { diff --git a/setup/dashboard/ws/src/handler/i18n.ts b/setup/dashboard/ws/src/handler/i18n.ts index e791281d..943f3033 100644 --- a/setup/dashboard/ws/src/handler/i18n.ts +++ b/setup/dashboard/ws/src/handler/i18n.ts @@ -4,8 +4,6 @@ import Constant from "../constant"; import { Socket } from "socket.io"; import i18n from "../i18n"; -// eslint-disable-next-line no-unused-vars -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default (client: Socket, next?: (err?: Error) => void) => { client.on(Constant.EVENT_I18N, (locale) => { console.log(`${client.id} set lang as ${locale}`); diff --git a/setup/dashboard/ws/src/handler/log.ts b/setup/dashboard/ws/src/handler/log.ts index cc304e3e..1b5c24f2 100644 --- a/setup/dashboard/ws/src/handler/log.ts +++ b/setup/dashboard/ws/src/handler/log.ts @@ -4,8 +4,6 @@ import Constant from "../constant"; import { Socket } from "socket.io"; -// eslint-disable-next-line no-unused-vars -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default (client: Socket, next?: (err?: Error) => void) => { const clientIp = client.handshake.headers["x-forwarded-for"] || client.handshake.address; console.log(`${client.id} connect from ${clientIp}`); diff --git a/setup/dashboard/ws/src/handler/message.ts b/setup/dashboard/ws/src/handler/message.ts index 9d9617b5..ad87f4ed 100644 --- a/setup/dashboard/ws/src/handler/message.ts +++ b/setup/dashboard/ws/src/handler/message.ts @@ -36,7 +36,7 @@ const parseUrl = (url: string) => { u = new URL(url, "http://localhost"); } const pathname = u.pathname; - const args: {[key: string]: string} = {}; + const args: Record = {}; u.searchParams.forEach((v, k) => { args[k] = v; }); @@ -94,8 +94,6 @@ const messageHandler = async (payload: Payload, client: Socket) => { } }; -// eslint-disable-next-line no-unused-vars -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export default (client: Socket, next?: (err?: Error) => void) => { client.on(Constant.EVENT_MESSAGE, payload => messageHandler(payload, client)); if (next) { diff --git a/setup/dashboard/ws/src/handler/utils/command.ts b/setup/dashboard/ws/src/handler/utils/command.ts index 027c9337..43cf0206 100644 --- a/setup/dashboard/ws/src/handler/utils/command.ts +++ b/setup/dashboard/ws/src/handler/utils/command.ts @@ -6,13 +6,11 @@ import Constant from "../../constant"; import { WatchedConfig } from "../../watchedConfig"; -export interface CommandType { - [key: string]: { - template: string; - operations: string[]; - targets: string[]; - }; -} +export type CommandType = Record; /** * get file list from given directory diff --git a/setup/dashboard/ws/src/info.ts b/setup/dashboard/ws/src/info.ts index d399f2c4..f9de852b 100644 --- a/setup/dashboard/ws/src/info.ts +++ b/setup/dashboard/ws/src/info.ts @@ -3,7 +3,7 @@ import pkgList from "../config/packages.json"; import { username } from "./constant"; -export const packageMap: { [key: string]: Service } = {}; +export const packageMap: Record = {}; export const packageList = pkgList as Service[]; interface ServiceDetail { @@ -14,9 +14,7 @@ interface ServiceDetail { tooltipsicon?: string; } -interface ServiceDetailList { - [key: string]: ServiceDetail; -} +type ServiceDetailList = Record; export interface Service { package: string; diff --git a/setup/dashboard/ws/src/libs/i18n/I18n.ts b/setup/dashboard/ws/src/libs/i18n/I18n.ts index 7f20b4da..30945e4f 100755 --- a/setup/dashboard/ws/src/libs/i18n/I18n.ts +++ b/setup/dashboard/ws/src/libs/i18n/I18n.ts @@ -1,4 +1,4 @@ -/* eslint-disable class-methods-use-this, no-underscore-dangle */ +/* eslint-disable class-methods-use-this */ import { get, has, merge } from "lodash"; @@ -69,158 +69,158 @@ const DEFAULT_I18N_OPTIONS: I18nOptions = { export class I18n { /** - * List of all onChange handlers. - * - * @type {OnChangeHandler[]} - */ + * List of all onChange handlers. + * + * @type {OnChangeHandler[]} + */ public onChangeHandlers: OnChangeHandler[] = []; /** - * Set the default string separator. Defaults to `.`, as in - * `scope.translation`. - * - * @type {string} - */ + * Set the default string separator. Defaults to `.`, as in + * `scope.translation`. + * + * @type {string} + */ public defaultSeparator: string; /** - * Set if engine should fallback to the default locale when a translation is - * missing. Defaults to `false`. - * - * When enabled, missing translations will first be looked for in less - * specific versions of the requested locale and if that fails by taking them - * from your `I18n#defaultLocale`. - * - * @type {boolean} - */ + * Set if engine should fallback to the default locale when a translation is + * missing. Defaults to `false`. + * + * When enabled, missing translations will first be looked for in less + * specific versions of the requested locale and if that fails by taking them + * from your `I18n#defaultLocale`. + * + * @type {boolean} + */ public enableFallback: boolean; /** - * The locale resolver registry. - * - * @see {@link Locales} - * - * @type {Locales} - */ + * The locale resolver registry. + * + * @see {@link Locales} + * + * @type {Locales} + */ public locales: Locales; /** - * The pluralization behavior registry. - * - * @see {@link Pluralization} - * - * @type {Pluralization} - */ + * The pluralization behavior registry. + * + * @see {@link Pluralization} + * + * @type {Pluralization} + */ public pluralization: Pluralization; /** - * Set missing translation behavior. - * - * - `message` will display a message that the translation is missing. - * - `guess` will try to guess the string. - * - `error` will raise an exception whenever a translation is not defined. - * - * See {@link MissingTranslation.register} for instructions on how to define - * your own behavior. - * - * @type {MissingBehavior} - */ + * Set missing translation behavior. + * + * - `message` will display a message that the translation is missing. + * - `guess` will try to guess the string. + * - `error` will raise an exception whenever a translation is not defined. + * + * See {@link MissingTranslation.register} for instructions on how to define + * your own behavior. + * + * @type {MissingBehavior} + */ public missingBehavior: string; /** - * Return a missing placeholder message for given parameters. - * - * @type {MissingPlaceholderHandler} - */ + * Return a missing placeholder message for given parameters. + * + * @type {MissingPlaceholderHandler} + */ public missingPlaceholder: MissingPlaceholderHandler; /** - * If you use missingBehavior with 'message', but want to know that the string - * is actually missing for testing purposes, you can prefix the guessed string - * by setting the value here. By default, no prefix is used. - * - * @type {string} - */ + * If you use missingBehavior with 'message', but want to know that the string + * is actually missing for testing purposes, you can prefix the guessed string + * by setting the value here. By default, no prefix is used. + * + * @type {string} + */ public missingTranslationPrefix: string; /** - * Return a placeholder message for null values. Defaults to the same behavior - * as `I18n.missingPlaceholder`. - * - * @type {NullPlaceholderHandler} - */ + * Return a placeholder message for null values. Defaults to the same behavior + * as `I18n.missingPlaceholder`. + * + * @type {NullPlaceholderHandler} + */ public nullPlaceholder: NullPlaceholderHandler; /** - * The missing translation behavior registry. - * - * @see {@link MissingTranslation} - * - * @type {MissingTranslation} - */ + * The missing translation behavior registry. + * + * @see {@link MissingTranslation} + * + * @type {MissingTranslation} + */ public missingTranslation: MissingTranslation; /** - * Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`. - * - * @type {RegExp} - */ + * Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`. + * + * @type {RegExp} + */ public placeholder: RegExp; /** - * Set the registered translations. The root key must always be the locale - * (and its variations with region). - * - * Remember that no events will be triggered if you change this object - * directly. To trigger `onchange` events, you must perform updates either - * using `I18n#store` or `I18n#update`. - * - * @type {Dict} - */ + * Set the registered translations. The root key must always be the locale + * (and its variations with region). + * + * Remember that no events will be triggered if you change this object + * directly. To trigger `onchange` events, you must perform updates either + * using `I18n#store` or `I18n#update`. + * + * @type {Dict} + */ public translations: Dict = {}; /** - * Transform keys. By default, it returns the key as it is, but allows for - * overriding. For instance, you can set a function to receive the camelcase - * key, and convert it to snake case. - * - * @type {(key: string) => string} - */ + * Transform keys. By default, it returns the key as it is, but allows for + * overriding. For instance, you can set a function to receive the camelcase + * key, and convert it to snake case. + * + * @type {(key: string) => string} + */ public transformKey: (key: string) => string; /** - * Override the interpolation function. For the default implementation, see - * - * @type {(i18n: I18n, message: string, options: TranslateOptions) => string} - */ + * Override the interpolation function. For the default implementation, see + * + * @type {(i18n: I18n, message: string, options: TranslateOptions) => string} + */ public interpolate: typeof interpolate; /** - * Set the available locales. - * - * @type {string[]} - */ + * Set the available locales. + * + * @type {string[]} + */ public availableLocales: string[] = []; /** - * @alias {@link translate} - */ + * @alias {@link translate} + */ public t = this.translate.bind(this); /** - * @alias {@link pluralize} - */ + * @alias {@link pluralize} + */ public p = this.pluralize.bind(this); /** - * @alias {@link localize} - */ + * @alias {@link localize} + */ public l = this.localize.bind(this); /** - * @alias {@link timeAgoInWords} - */ + * @alias {@link timeAgoInWords} + */ public distanceOfTimeInWords = this.timeAgoInWords.bind(this); private _locale: string = DEFAULT_I18N_OPTIONS.locale; @@ -264,16 +264,14 @@ export class I18n { } /** - * Return the current locale, using a explicit locale set using - * `i18n.locale = newLocale`, the default locale set using - * `i18n.defaultLocale` or the fallback, which is `en`. - * - * @returns {string} The current locale. - */ - public get locale(): string { - return this._locale || this.defaultLocale || "en"; + * Return the change version. This value is incremented whenever `I18n#store` + * or `I18n#update` is called, or when `I18n#locale`/`I18n#defaultLocale` is + * set. + */ + public get version(): number { + return this._version; } - + /** * Return the default locale, using a explicit locale set using * `i18n.defaultLocale = locale`, the default locale set using @@ -286,19 +284,21 @@ export class I18n { } /** - * Return the change version. This value is incremented whenever `I18n#store` - * or `I18n#update` is called, or when `I18n#locale`/`I18n#defaultLocale` is - * set. - */ - public get version(): number { - return this._version; + * Return the current locale, using a explicit locale set using + * `i18n.locale = newLocale`, the default locale set using + * `i18n.defaultLocale` or the fallback, which is `en`. + * + * @returns {string} The current locale. + */ + public get locale(): string { + return this._locale || this.defaultLocale || "en"; } /** - * Set the current locale explicitly. - * - * @param {string} newLocale The new locale. - */ + * Set the current locale explicitly. + * + * @param {string} newLocale The new locale. + */ public set locale(newLocale: string) { if (typeof newLocale !== "string") { throw new Error( @@ -335,48 +335,48 @@ export class I18n { this.hasChanged(); } } - + /** - * Update translations by merging them. Newest translations will override - * existing ones. - * - * @param {Dict} translations An object containing the translations that will - * be merged into existing translations. - * - * @returns {void} - */ + * Update translations by merging them. Newest translations will override + * existing ones. + * + * @param {Dict} translations An object containing the translations that will + * be merged into existing translations. + * + * @returns {void} + */ public store(translations: Dict): void { merge(this.translations, translations); this.hasChanged(); } /** - * Translate the given scope with the provided options. - * - * @param {string|array} scope The scope that will be used. - * - * @param {TranslateOptions} options The options that will be used on the - * translation. Can include some special options like `defaultValue`, `count`, - * and `scope`. Everything else will be treated as replacement values. - * - * @param {number} options.count Enable pluralization. The returned - * translation will depend on the detected pluralizer. - * - * @param {any} options.defaultValue The default value that will used in case - * the translation defined by `scope` cannot be found. Can be a function that - * returns a string; the signature is - * `(i18n:I18n, options: TranslateOptions): string`. - * - * @param {MissingBehavior|string} options.missingBehavior The missing - * behavior that will be used instead of the default one. - * - * @param {Dict[]} options.defaults An array of hashs where the key is the - * type of translation desired, a `scope` or a `message`. The translation - * returned will be either the first scope recognized, or the first message - * defined. - * - * @returns {T | string} The translated string. - */ + * Translate the given scope with the provided options. + * + * @param {string|array} scope The scope that will be used. + * + * @param {TranslateOptions} options The options that will be used on the + * translation. Can include some special options like `defaultValue`, `count`, + * and `scope`. Everything else will be treated as replacement values. + * + * @param {number} options.count Enable pluralization. The returned + * translation will depend on the detected pluralizer. + * + * @param {any} options.defaultValue The default value that will used in case + * the translation defined by `scope` cannot be found. Can be a function that + * returns a string; the signature is + * `(i18n:I18n, options: TranslateOptions): string`. + * + * @param {MissingBehavior|string} options.missingBehavior The missing + * behavior that will be used instead of the default one. + * + * @param {Dict[]} options.defaults An array of hashs where the key is the + * type of translation desired, a `scope` or a `message`. The translation + * returned will be either the first scope recognized, or the first message + * defined. + * + * @returns {T | string} The translated string. + */ public translate( scope: Scope, options?: TranslateOptions, @@ -437,18 +437,18 @@ export class I18n { } /** - * Pluralize the given scope using the `count` value. The pluralized - * translation may have other placeholders, which will be retrieved from - * `options`. - * - * @param {number} count The counting number. - * - * @param {Scope} scope The translation scope. - * - * @param {TranslateOptions} options The translation options. - * - * @returns {string} The translated string. - */ + * Pluralize the given scope using the `count` value. The pluralized + * translation may have other placeholders, which will be retrieved from + * `options`. + * + * @param {number} count The counting number. + * + * @param {Scope} scope The translation scope. + * + * @param {TranslateOptions} options The translation options. + * + * @returns {string} The translated string. + */ public pluralize( count: number, scope: Scope, @@ -464,24 +464,24 @@ export class I18n { } /** - * Localize several values. - * - * You can provide the following scopes: `currency`, `number`, or - * `percentage`. If you provide a scope that matches the `/^(date|time)/` - * regular expression then the `value` will be converted by using the - * `I18n.toTime` function. It will default to the value's `toString` function. - * - * If value is either `null` or `undefined` then an empty string will be - * returned, regardless of what localization type has been used. - * - * @param {string} type The localization type. - * - * @param {string|number|Date} value The value that must be localized. - * - * @param {Dict} options The localization options. - * - * @returns {string} The localized string. - */ + * Localize several values. + * + * You can provide the following scopes: `currency`, `number`, or + * `percentage`. If you provide a scope that matches the `/^(date|time)/` + * regular expression then the `value` will be converted by using the + * `I18n.toTime` function. It will default to the value's `toString` function. + * + * If value is either `null` or `undefined` then an empty string will be + * returned, regardless of what localization type has been used. + * + * @param {string} type The localization type. + * + * @param {string|number|Date} value The value that must be localized. + * + * @param {Dict} options The localization options. + * + * @returns {string} The localized string. + */ public localize( type: string, value: string | number | Date | null | undefined, @@ -526,14 +526,14 @@ export class I18n { /** - * Convert the given dateString into a formatted date. - * - * @param {scope} scope The formatting scope. - * - * @param {DateTime} input The string that must be parsed into a Date object. - * - * @returns {string} The formatted date. - */ + * Convert the given dateString into a formatted date. + * + * @param {scope} scope The formatting scope. + * + * @param {DateTime} input The string that must be parsed into a Date object. + * + * @returns {string} The formatted date. + */ public toTime(scope: Scope, input: DateTime): string { const date = parseDate(input); const format: string = lookup(this, scope); @@ -550,98 +550,98 @@ export class I18n { } /** - * Formats a `number` into a currency string (e.g., $13.65). You can customize - * the format in the using an `options` object. - * - * The currency unit and number formatting of the current locale will be used - * unless otherwise specified in the provided options. No currency conversion - * is performed. If the user is given a way to change their locale, they will - * also be able to change the relative value of the currency displayed with - * this helper. - * - * @example - * ```js - * i18n.numberToCurrency(1234567890.5); - * // => "$1,234,567,890.50" - * - * i18n.numberToCurrency(1234567890.506); - * // => "$1,234,567,890.51" - * - * i18n.numberToCurrency(1234567890.506, { precision: 3 }); - * // => "$1,234,567,890.506" - * - * i18n.numberToCurrency("123a456"); - * // => "$123a456" - * - * i18n.numberToCurrency("123a456", { raise: true }); - * // => raises exception ("123a456" is not a valid numeric value) - * - * i18n.numberToCurrency(-0.456789, { precision: 0 }); - * // => "$0" - * - * i18n.numberToCurrency(-1234567890.5, { negativeFormat: "(%u%n)" }); - * // => "($1,234,567,890.50)" - * - * i18n.numberToCurrency(1234567890.5, { - * unit: "£", - * separator: ",", - * delimiter: "", - * }); - * // => "£1234567890,50" - * - * i18n.numberToCurrency(1234567890.5, { - * unit: "£", - * separator: ",", - * delimiter: "", - * format: "%n %u", - * }); - * // => "1234567890,50 £" - * - * i18n.numberToCurrency(1234567890.5, { stripInsignificantZeros: true }); - * // => "$1,234,567,890.5" - * - * i18n.numberToCurrency(1234567890.5, { precision: 0, roundMode: "up" }); - * // => "$1,234,567,891" - * ``` - * - * @param {Numeric} input The number to be formatted. - * - * @param {NumberToCurrencyOptions} options The formatting options. When - * defined, supersedes the default options defined by `number.format` and - * `number.currency.*`. - * - * @param {number} options.precision Sets the level of precision (defaults to - * 2). - * - * @param {RoundingMode} options.roundMode Determine how rounding is performed - * (defaults to `default`.) - * - * @param {string} options.unit Sets the denomination of the currency - * (defaults to "$"). - * - * @param {string} options.separator Sets the separator between the units - * (defaults to "."). - * - * @param {string} options.delimiter Sets the thousands delimiter - * (defaults to ","). - * - * @param {string} options.format Sets the format for non-negative numbers - * (defaults to "%u%n"). Fields are `%u` for the currency, and `%n` for the - * number. - * - * @param {string} options.negativeFormat Sets the format for negative numbers - * (defaults to prepending a hyphen to the formatted number given by - * `format`). Accepts the same fields than `format`, except `%n` is here the - * absolute value of the number. - * - * @param {boolean} options.stripInsignificantZeros If `true` removes - * insignificant zeros after the decimal separator (defaults to `false`). - * - * @param {boolean} options.raise If `true`, raises exception for non-numeric - * values like `NaN` and infinite values. - * - * @returns {string} The formatted number. - */ + * Formats a `number` into a currency string (e.g., $13.65). You can customize + * the format in the using an `options` object. + * + * The currency unit and number formatting of the current locale will be used + * unless otherwise specified in the provided options. No currency conversion + * is performed. If the user is given a way to change their locale, they will + * also be able to change the relative value of the currency displayed with + * this helper. + * + * @example + * ```js + * i18n.numberToCurrency(1234567890.5); + * // => "$1,234,567,890.50" + * + * i18n.numberToCurrency(1234567890.506); + * // => "$1,234,567,890.51" + * + * i18n.numberToCurrency(1234567890.506, { precision: 3 }); + * // => "$1,234,567,890.506" + * + * i18n.numberToCurrency("123a456"); + * // => "$123a456" + * + * i18n.numberToCurrency("123a456", { raise: true }); + * // => raises exception ("123a456" is not a valid numeric value) + * + * i18n.numberToCurrency(-0.456789, { precision: 0 }); + * // => "$0" + * + * i18n.numberToCurrency(-1234567890.5, { negativeFormat: "(%u%n)" }); + * // => "($1,234,567,890.50)" + * + * i18n.numberToCurrency(1234567890.5, { + * unit: "£", + * separator: ",", + * delimiter: "", + * }); + * // => "£1234567890,50" + * + * i18n.numberToCurrency(1234567890.5, { + * unit: "£", + * separator: ",", + * delimiter: "", + * format: "%n %u", + * }); + * // => "1234567890,50 £" + * + * i18n.numberToCurrency(1234567890.5, { stripInsignificantZeros: true }); + * // => "$1,234,567,890.5" + * + * i18n.numberToCurrency(1234567890.5, { precision: 0, roundMode: "up" }); + * // => "$1,234,567,891" + * ``` + * + * @param {Numeric} input The number to be formatted. + * + * @param {NumberToCurrencyOptions} options The formatting options. When + * defined, supersedes the default options defined by `number.format` and + * `number.currency.*`. + * + * @param {number} options.precision Sets the level of precision (defaults to + * 2). + * + * @param {RoundingMode} options.roundMode Determine how rounding is performed + * (defaults to `default`.) + * + * @param {string} options.unit Sets the denomination of the currency + * (defaults to "$"). + * + * @param {string} options.separator Sets the separator between the units + * (defaults to "."). + * + * @param {string} options.delimiter Sets the thousands delimiter + * (defaults to ","). + * + * @param {string} options.format Sets the format for non-negative numbers + * (defaults to "%u%n"). Fields are `%u` for the currency, and `%n` for the + * number. + * + * @param {string} options.negativeFormat Sets the format for negative numbers + * (defaults to prepending a hyphen to the formatted number given by + * `format`). Accepts the same fields than `format`, except `%n` is here the + * absolute value of the number. + * + * @param {boolean} options.stripInsignificantZeros If `true` removes + * insignificant zeros after the decimal separator (defaults to `false`). + * + * @param {boolean} options.raise If `true`, raises exception for non-numeric + * values like `NaN` and infinite values. + * + * @returns {string} The formatted number. + */ public numberToCurrency( input: Numeric, options: Partial = {}, @@ -663,69 +663,69 @@ export class I18n { } /** - * Convert a number into a formatted percentage value. - * - * @example - * ```js - * i18n.numberToPercentage(100); - * // => "100.000%" - * - * i18n.numberToPercentage("98"); - * // => "98.000%" - * - * i18n.numberToPercentage(100, { precision: 0 }); - * // => "100%" - * - * i18n.numberToPercentage(1000, { delimiter: ".", separator: "," }); - * // => "1.000,000%" - * - * i18n.numberToPercentage(302.24398923423, { precision: 5 }); - * // => "302.24399%" - * - * i18n.numberToPercentage(1000, { precision: null }); - * // => "1000%" - * - * i18n.numberToPercentage("98a"); - * // => "98a%" - * - * i18n.numberToPercentage(100, { format: "%n %" }); - * // => "100.000 %" - * - * i18n.numberToPercentage(302.24398923423, { precision: 5, roundMode: "down" }); - * // => "302.24398%" - * ``` - * - * @param {Numeric} input The number to be formatted. - * - * @param {NumberToPercentageOptions} options The formatting options. When - * defined, supersedes the default options stored at `number.format` and - * `number.percentage.*`. - * - * @param {number} options.precision Sets the level of precision (defaults to - * 3). - * - * @param {RoundingMode} options.roundMode Determine how rounding is performed - * (defaults to `default`.) - * - * @param {string} options.separator Sets the separator between the units - * (defaults to "."). - * - * @param {string} options.delimiter Sets the thousands delimiter (defaults to - * ""). - * - * @param {string} options.format Sets the format for non-negative numbers - * (defaults to "%n%"). The number field is represented by `%n`. - * - * @param {string} options.negativeFormat Sets the format for negative numbers - * (defaults to prepending a hyphen to the formatted number given by - * `format`). Accepts the same fields than `format`, except `%n` is here the - * absolute value of the number. - * - * @param {boolean} options.stripInsignificantZeros If `true` removes - * insignificant zeros after the decimal separator (defaults to `false`). - * - * @returns {string} The formatted number. - */ + * Convert a number into a formatted percentage value. + * + * @example + * ```js + * i18n.numberToPercentage(100); + * // => "100.000%" + * + * i18n.numberToPercentage("98"); + * // => "98.000%" + * + * i18n.numberToPercentage(100, { precision: 0 }); + * // => "100%" + * + * i18n.numberToPercentage(1000, { delimiter: ".", separator: "," }); + * // => "1.000,000%" + * + * i18n.numberToPercentage(302.24398923423, { precision: 5 }); + * // => "302.24399%" + * + * i18n.numberToPercentage(1000, { precision: null }); + * // => "1000%" + * + * i18n.numberToPercentage("98a"); + * // => "98a%" + * + * i18n.numberToPercentage(100, { format: "%n %" }); + * // => "100.000 %" + * + * i18n.numberToPercentage(302.24398923423, { precision: 5, roundMode: "down" }); + * // => "302.24398%" + * ``` + * + * @param {Numeric} input The number to be formatted. + * + * @param {NumberToPercentageOptions} options The formatting options. When + * defined, supersedes the default options stored at `number.format` and + * `number.percentage.*`. + * + * @param {number} options.precision Sets the level of precision (defaults to + * 3). + * + * @param {RoundingMode} options.roundMode Determine how rounding is performed + * (defaults to `default`.) + * + * @param {string} options.separator Sets the separator between the units + * (defaults to "."). + * + * @param {string} options.delimiter Sets the thousands delimiter (defaults to + * ""). + * + * @param {string} options.format Sets the format for non-negative numbers + * (defaults to "%n%"). The number field is represented by `%n`. + * + * @param {string} options.negativeFormat Sets the format for negative numbers + * (defaults to prepending a hyphen to the formatted number given by + * `format`). Accepts the same fields than `format`, except `%n` is here the + * absolute value of the number. + * + * @param {boolean} options.stripInsignificantZeros If `true` removes + * insignificant zeros after the decimal separator (defaults to `false`). + * + * @returns {string} The formatted number. + */ public numberToPercentage( input: Numeric, options: Partial = {}, @@ -746,80 +746,80 @@ export class I18n { } /** - * Convert a number into a readable size representation. - * - * @example - * ```js - * i18n.numberToHumanSize(123) - * // => "123 Bytes" - * - * i18n.numberToHumanSize(1234) - * // => "1.21 KB" - * - * i18n.numberToHumanSize(12345) - * // => "12.1 KB" - * - * i18n.numberToHumanSize(1234567) - * // => "1.18 MB" - * - * i18n.numberToHumanSize(1234567890) - * // => "1.15 GB" - * - * i18n.numberToHumanSize(1234567890123) - * // => "1.12 TB" - * - * i18n.numberToHumanSize(1234567890123456) - * // => "1.1 PB" - * - * i18n.numberToHumanSize(1234567890123456789) - * // => "1.07 EB" - * - * i18n.numberToHumanSize(1234567, {precision: 2}) - * // => "1.2 MB" - * - * i18n.numberToHumanSize(483989, precision: 2) - * // => "470 KB" - * - * i18n.numberToHumanSize(483989, {precision: 2, roundMode: "up"}) - * // => "480 KB" - * - * i18n.numberToHumanSize(1234567, {precision: 2, separator: ","}) - * // => "1,2 MB" - * - * i18n.numberToHumanSize(1234567890123, {precision: 5}) - * // => "1.1228 TB" - * - * i18n.numberToHumanSize(524288000, {precision: 5}) - * // => "500 MB" - * ``` - * - * @param {Numeric} input The number that will be formatted. - * - * @param {NumberToHumanSizeOptions} options The formatting options. When - * defined, supersedes the default options stored at - * `number.human.storage_units.*` and `number.human.format`. - * - * @param {number} options.precision Sets the precision of the number - * (defaults to 3). - * - * @param {RoundingMode} options.roundMode Determine how rounding is performed - * (defaults to `default`) - * - * @param {boolean} options.significant If `true`, precision will be the - * number of significant digits. If `false`, the number of fractional digits - * (defaults to `true`). - * - * @param {string} options.separator Sets the separator between the fractional - * and integer digits (defaults to "."). - * - * @param {string} options.delimiter Sets the thousands delimiter (defaults - * to ""). - * - * @param {boolean} options.stripInsignificantZeros If `true` removes - * insignificant zeros after the decimal separator (defaults to `true`). - * - * @returns {string} The formatted number. - */ + * Convert a number into a readable size representation. + * + * @example + * ```js + * i18n.numberToHumanSize(123) + * // => "123 Bytes" + * + * i18n.numberToHumanSize(1234) + * // => "1.21 KB" + * + * i18n.numberToHumanSize(12345) + * // => "12.1 KB" + * + * i18n.numberToHumanSize(1234567) + * // => "1.18 MB" + * + * i18n.numberToHumanSize(1234567890) + * // => "1.15 GB" + * + * i18n.numberToHumanSize(1234567890123) + * // => "1.12 TB" + * + * i18n.numberToHumanSize(1234567890123456) + * // => "1.1 PB" + * + * i18n.numberToHumanSize(1234567890123456789) + * // => "1.07 EB" + * + * i18n.numberToHumanSize(1234567, {precision: 2}) + * // => "1.2 MB" + * + * i18n.numberToHumanSize(483989, precision: 2) + * // => "470 KB" + * + * i18n.numberToHumanSize(483989, {precision: 2, roundMode: "up"}) + * // => "480 KB" + * + * i18n.numberToHumanSize(1234567, {precision: 2, separator: ","}) + * // => "1,2 MB" + * + * i18n.numberToHumanSize(1234567890123, {precision: 5}) + * // => "1.1228 TB" + * + * i18n.numberToHumanSize(524288000, {precision: 5}) + * // => "500 MB" + * ``` + * + * @param {Numeric} input The number that will be formatted. + * + * @param {NumberToHumanSizeOptions} options The formatting options. When + * defined, supersedes the default options stored at + * `number.human.storage_units.*` and `number.human.format`. + * + * @param {number} options.precision Sets the precision of the number + * (defaults to 3). + * + * @param {RoundingMode} options.roundMode Determine how rounding is performed + * (defaults to `default`) + * + * @param {boolean} options.significant If `true`, precision will be the + * number of significant digits. If `false`, the number of fractional digits + * (defaults to `true`). + * + * @param {string} options.separator Sets the separator between the fractional + * and integer digits (defaults to "."). + * + * @param {string} options.delimiter Sets the thousands delimiter (defaults + * to ""). + * + * @param {boolean} options.stripInsignificantZeros If `true` removes + * insignificant zeros after the decimal separator (defaults to `true`). + * + * @returns {string} The formatted number. + */ public numberToHumanSize( input: Numeric, options: Partial = {}, @@ -848,159 +848,159 @@ export class I18n { } /** - * Convert a number into a readable representation. - * - * @example - * ```js - * i18n.numberToHuman(123); - * // => "123" - * - * i18n.numberToHuman(1234); - * // => "1.23 Thousand" - * - * i18n.numberToHuman(12345); - * // => "12.3 Thousand" - * - * i18n.numberToHuman(1234567); - * // => "1.23 Million" - * - * i18n.numberToHuman(1234567890); - * // => "1.23 Billion" - * - * i18n.numberToHuman(1234567890123); - * // => "1.23 Trillion" - * - * i18n.numberToHuman(1234567890123456); - * // => "1.23 Quadrillion" - * - * i18n.numberToHuman(1234567890123456789); - * // => "1230 Quadrillion" - * - * i18n.numberToHuman(489939, { precision: 2 }); - * // => "490 Thousand" - * - * i18n.numberToHuman(489939, { precision: 4 }); - * // => "489.9 Thousand" - * - * i18n.numberToHuman(489939, { precision: 2, roundMode: "down" }); - * // => "480 Thousand" - * - * i18n.numberToHuman(1234567, { precision: 4, significant: false }); - * // => "1.2346 Million" - * - * i18n.numberToHuman(1234567, { - * precision: 1, - * separator: ",", - * significant: false, - * }); - * // => "1,2 Million" - * - * i18n.numberToHuman(500000000, { precision: 5 }); - * // => "500 Million" - * - * i18n.numberToHuman(12345012345, { significant: false }); - * // => "12.345 Billion" - * ``` - * - * Non-significant zeros after the decimal separator are stripped out by default - * (set `stripInsignificantZeros` to `false` to change that): - * - * ```js - * i18n.numberToHuman(12.00001); - * // => "12" - * - * i18n.numberToHuman(12.00001, { stripInsignificantZeros: false }); - * // => "12.0" - * ``` - * - * You can also use your own custom unit quantifiers: - * - * ```js - * i18n.numberToHuman(500000, units: { unit: "ml", thousand: "lt" }); - * // => "500 lt" - * ``` - * - * If in your I18n locale you have: - * - * ```yaml - * --- - * en: - * distance: - * centi: - * one: "centimeter" - * other: "centimeters" - * unit: - * one: "meter" - * other: "meters" - * thousand: - * one: "kilometer" - * other: "kilometers" - * billion: "gazillion-distance" - * ``` - * - * Then you could do: - * - * ```js - * i18n.numberToHuman(543934, { units: "distance" }); - * // => "544 kilometers" - * - * i18n.numberToHuman(54393498, { units: "distance" }); - * // => "54400 kilometers" - * - * i18n.numberToHuman(54393498000, { units: "distance" }); - * // => "54.4 gazillion-distance" - * - * i18n.numberToHuman(343, { units: "distance", precision: 1 }); - * // => "300 meters" - * - * i18n.numberToHuman(1, { units: "distance" }); - * // => "1 meter" - * - * i18n.numberToHuman(0.34, { units: "distance" }); - * // => "34 centimeters" - * ``` - * - * @param {Numeric} input The number that will be formatted. - * - * @param {NumberToHumanOptions} options The formatting options. When - * defined, supersedes the default options stored at `number.human.format.*` - * and `number.human.storage_units.*`. - * - * @param {number} options.precision Sets the precision of the number - * (defaults to 3). - * - * @param {RoundingMode} options.roundMode Determine how rounding is performed - * (defaults to `default`). - * - * @param {boolean} options.significant If `true`, precision will be the - * number of significant_digits. If `false`, the number of fractional digits - * (defaults to `true`) - * - * @param {string} options.separator Sets the separator between the fractional - * and integer digits (defaults to "."). - * - * @param {string} options.delimiter Sets the thousands delimiter - * (defaults to ""). - * - * @param {boolean} options.stripInsignificantZeros If `true` removes - * insignificant zeros after the decimal separator (defaults to `true`). - * - * @param {Dict} options.units A Hash of unit quantifier names. Or a string - * containing an I18n scope where to find this object. It might have the - * following keys: - * - * - _integers_: `unit`, `ten`, `hundred`, `thousand`, `million`, `billion`, - * `trillion`, `quadrillion` - * - _fractionals_: `deci`, `centi`, `mili`, `micro`, `nano`, `pico`, `femto` - * - * @param {string} options.format Sets the format of the output string - * (defaults to "%n %u"). The field types are: - * - * - `%u` - The quantifier (ex.: 'thousand') - * - `%n` - The number - * - * @returns {string} The formatted number. - */ + * Convert a number into a readable representation. + * + * @example + * ```js + * i18n.numberToHuman(123); + * // => "123" + * + * i18n.numberToHuman(1234); + * // => "1.23 Thousand" + * + * i18n.numberToHuman(12345); + * // => "12.3 Thousand" + * + * i18n.numberToHuman(1234567); + * // => "1.23 Million" + * + * i18n.numberToHuman(1234567890); + * // => "1.23 Billion" + * + * i18n.numberToHuman(1234567890123); + * // => "1.23 Trillion" + * + * i18n.numberToHuman(1234567890123456); + * // => "1.23 Quadrillion" + * + * i18n.numberToHuman(1234567890123456789); + * // => "1230 Quadrillion" + * + * i18n.numberToHuman(489939, { precision: 2 }); + * // => "490 Thousand" + * + * i18n.numberToHuman(489939, { precision: 4 }); + * // => "489.9 Thousand" + * + * i18n.numberToHuman(489939, { precision: 2, roundMode: "down" }); + * // => "480 Thousand" + * + * i18n.numberToHuman(1234567, { precision: 4, significant: false }); + * // => "1.2346 Million" + * + * i18n.numberToHuman(1234567, { + * precision: 1, + * separator: ",", + * significant: false, + * }); + * // => "1,2 Million" + * + * i18n.numberToHuman(500000000, { precision: 5 }); + * // => "500 Million" + * + * i18n.numberToHuman(12345012345, { significant: false }); + * // => "12.345 Billion" + * ``` + * + * Non-significant zeros after the decimal separator are stripped out by default + * (set `stripInsignificantZeros` to `false` to change that): + * + * ```js + * i18n.numberToHuman(12.00001); + * // => "12" + * + * i18n.numberToHuman(12.00001, { stripInsignificantZeros: false }); + * // => "12.0" + * ``` + * + * You can also use your own custom unit quantifiers: + * + * ```js + * i18n.numberToHuman(500000, units: { unit: "ml", thousand: "lt" }); + * // => "500 lt" + * ``` + * + * If in your I18n locale you have: + * + * ```yaml + * --- + * en: + * distance: + * centi: + * one: "centimeter" + * other: "centimeters" + * unit: + * one: "meter" + * other: "meters" + * thousand: + * one: "kilometer" + * other: "kilometers" + * billion: "gazillion-distance" + * ``` + * + * Then you could do: + * + * ```js + * i18n.numberToHuman(543934, { units: "distance" }); + * // => "544 kilometers" + * + * i18n.numberToHuman(54393498, { units: "distance" }); + * // => "54400 kilometers" + * + * i18n.numberToHuman(54393498000, { units: "distance" }); + * // => "54.4 gazillion-distance" + * + * i18n.numberToHuman(343, { units: "distance", precision: 1 }); + * // => "300 meters" + * + * i18n.numberToHuman(1, { units: "distance" }); + * // => "1 meter" + * + * i18n.numberToHuman(0.34, { units: "distance" }); + * // => "34 centimeters" + * ``` + * + * @param {Numeric} input The number that will be formatted. + * + * @param {NumberToHumanOptions} options The formatting options. When + * defined, supersedes the default options stored at `number.human.format.*` + * and `number.human.storage_units.*`. + * + * @param {number} options.precision Sets the precision of the number + * (defaults to 3). + * + * @param {RoundingMode} options.roundMode Determine how rounding is performed + * (defaults to `default`). + * + * @param {boolean} options.significant If `true`, precision will be the + * number of significant_digits. If `false`, the number of fractional digits + * (defaults to `true`) + * + * @param {string} options.separator Sets the separator between the fractional + * and integer digits (defaults to "."). + * + * @param {string} options.delimiter Sets the thousands delimiter + * (defaults to ""). + * + * @param {boolean} options.stripInsignificantZeros If `true` removes + * insignificant zeros after the decimal separator (defaults to `true`). + * + * @param {Dict} options.units A Hash of unit quantifier names. Or a string + * containing an I18n scope where to find this object. It might have the + * following keys: + * + * - _integers_: `unit`, `ten`, `hundred`, `thousand`, `million`, `billion`, + * `trillion`, `quadrillion` + * - _fractionals_: `deci`, `centi`, `mili`, `micro`, `nano`, `pico`, `femto` + * + * @param {string} options.format Sets the format of the output string + * (defaults to "%n %u"). The field types are: + * + * - `%u` - The quantifier (ex.: 'thousand') + * - `%n` - The number + * + * @returns {string} The formatted number. + */ public numberToHuman( input: Numeric, options: Partial = {}, @@ -1032,77 +1032,77 @@ export class I18n { } /** - * Convert number to a formatted rounded value. - * - * @example - * ```js - * i18n.numberToRounded(111.2345); - * // => "111.235" - * - * i18n.numberToRounded(111.2345, { precision: 2 }); - * // => "111.23" - * - * i18n.numberToRounded(13, { precision: 5 }); - * // => "13.00000" - * - * i18n.numberToRounded(389.32314, { precision: 0 }); - * // => "389" - * - * i18n.numberToRounded(111.2345, { significant: true }); - * // => "111" - * - * i18n.numberToRounded(111.2345, { precision: 1, significant: true }); - * // => "100" - * - * i18n.numberToRounded(13, { precision: 5, significant: true }); - * // => "13.000" - * - * i18n.numberToRounded(13, { precision: null }); - * // => "13" - * - * i18n.numberToRounded(389.32314, { precision: 0, roundMode: "up" }); - * // => "390" - * - * i18n.numberToRounded(13, { - * precision: 5, - * significant: true, - * stripInsignificantZeros: true, - * }); - * // => "13" - * - * i18n.numberToRounded(389.32314, { precision: 4, significant: true }); - * // => "389.3" - * - * i18n.numberToRounded(1111.2345, { - * precision: 2, - * separator: ",", - * delimiter: ".", - * }); - * // => "1.111,23" - * ``` - * - * @param {Numeric} input The number to be formatted. - * - * @param {NumberToRoundedOptions} options The formatting options. - * - * @param {number} options.precision Sets the precision of the number - * (defaults to 3). - * - * @param {string} options.separator Sets the separator between the - * fractional and integer digits (defaults to "."). - * - * @param {RoundingMode} options.roundMode Determine how rounding is - * performed. - * - * @param {boolean} options.significant If `true`, precision will be the - * number of significant_digits. If `false`, the number of fractional digits - * (defaults to `false`). - * - * @param {boolean} options.stripInsignificantZeros If `true` removes - * insignificant zeros after the decimal separator (defaults to `false`). - * - * @returns {string} The formatted number. - */ + * Convert number to a formatted rounded value. + * + * @example + * ```js + * i18n.numberToRounded(111.2345); + * // => "111.235" + * + * i18n.numberToRounded(111.2345, { precision: 2 }); + * // => "111.23" + * + * i18n.numberToRounded(13, { precision: 5 }); + * // => "13.00000" + * + * i18n.numberToRounded(389.32314, { precision: 0 }); + * // => "389" + * + * i18n.numberToRounded(111.2345, { significant: true }); + * // => "111" + * + * i18n.numberToRounded(111.2345, { precision: 1, significant: true }); + * // => "100" + * + * i18n.numberToRounded(13, { precision: 5, significant: true }); + * // => "13.000" + * + * i18n.numberToRounded(13, { precision: null }); + * // => "13" + * + * i18n.numberToRounded(389.32314, { precision: 0, roundMode: "up" }); + * // => "390" + * + * i18n.numberToRounded(13, { + * precision: 5, + * significant: true, + * stripInsignificantZeros: true, + * }); + * // => "13" + * + * i18n.numberToRounded(389.32314, { precision: 4, significant: true }); + * // => "389.3" + * + * i18n.numberToRounded(1111.2345, { + * precision: 2, + * separator: ",", + * delimiter: ".", + * }); + * // => "1.111,23" + * ``` + * + * @param {Numeric} input The number to be formatted. + * + * @param {NumberToRoundedOptions} options The formatting options. + * + * @param {number} options.precision Sets the precision of the number + * (defaults to 3). + * + * @param {string} options.separator Sets the separator between the + * fractional and integer digits (defaults to "."). + * + * @param {RoundingMode} options.roundMode Determine how rounding is + * performed. + * + * @param {boolean} options.significant If `true`, precision will be the + * number of significant_digits. If `false`, the number of fractional digits + * (defaults to `false`). + * + * @param {boolean} options.stripInsignificantZeros If `true` removes + * insignificant zeros after the decimal separator (defaults to `false`). + * + * @returns {string} The formatted number. + */ public numberToRounded( input: Numeric, options?: Partial, @@ -1119,57 +1119,57 @@ export class I18n { } /** - * Formats a +number+ with grouped thousands using `delimiter` (e.g., 12,324). - * You can customize the format in the `options` parameter. - * - * @example - * ```js - * i18n.numberToDelimited(12345678); - * // => "12,345,678" - * - * i18n.numberToDelimited("123456"); - * // => "123,456" - * - * i18n.numberToDelimited(12345678.05); - * // => "12,345,678.05" - * - * i18n.numberToDelimited(12345678, { delimiter: "." }); - * // => "12.345.678" - * - * i18n.numberToDelimited(12345678, { delimiter: "," }); - * // => "12,345,678" - * - * i18n.numberToDelimited(12345678.05, { separator: " " }); - * // => "12,345,678 05" - * - * i18n.numberToDelimited("112a"); - * // => "112a" - * - * i18n.numberToDelimited(98765432.98, { delimiter: " ", separator: "," }); - * // => "98 765 432,98" - * - * i18n.numberToDelimited("123456.78", { - * delimiterPattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/g, - * }); - * // => "1,23,456.78" - * ``` - * - * @param {Numeric} input The numeric value that will be formatted. - * - * @param {NumberToDelimitedOptions} options The formatting options. - * - * @param {string} options.delimiter Sets the thousands delimiter (defaults to - * ","). - * - * @param {string} options.separator Sets the separator between the fractional - * and integer digits (defaults to "."). - * - * @param {RegExp} options.delimiterPattern Sets a custom regular expression - * used for deriving the placement of delimiter. Helpful when using currency - * formats like INR. - * - * @return {string} The formatted number. - */ + * Formats a +number+ with grouped thousands using `delimiter` (e.g., 12,324). + * You can customize the format in the `options` parameter. + * + * @example + * ```js + * i18n.numberToDelimited(12345678); + * // => "12,345,678" + * + * i18n.numberToDelimited("123456"); + * // => "123,456" + * + * i18n.numberToDelimited(12345678.05); + * // => "12,345,678.05" + * + * i18n.numberToDelimited(12345678, { delimiter: "." }); + * // => "12.345.678" + * + * i18n.numberToDelimited(12345678, { delimiter: "," }); + * // => "12,345,678" + * + * i18n.numberToDelimited(12345678.05, { separator: " " }); + * // => "12,345,678 05" + * + * i18n.numberToDelimited("112a"); + * // => "112a" + * + * i18n.numberToDelimited(98765432.98, { delimiter: " ", separator: "," }); + * // => "98 765 432,98" + * + * i18n.numberToDelimited("123456.78", { + * delimiterPattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/g, + * }); + * // => "1,23,456.78" + * ``` + * + * @param {Numeric} input The numeric value that will be formatted. + * + * @param {NumberToDelimitedOptions} options The formatting options. + * + * @param {string} options.delimiter Sets the thousands delimiter (defaults to + * ","). + * + * @param {string} options.separator Sets the separator between the fractional + * and integer digits (defaults to "."). + * + * @param {RegExp} options.delimiterPattern Sets a custom regular expression + * used for deriving the placement of delimiter. Helpful when using currency + * formats like INR. + * + * @return {string} The formatted number. + */ public numberToDelimited( input: Numeric, options: Partial = {}, @@ -1183,28 +1183,28 @@ export class I18n { } /** - * Executes function with given locale set. The locale will be changed only - * during the `callback`'s execution, switching back to the previous value - * once it finishes (with or without errors). - * - * This is an asynchronous call, which means you must use `await` or you may - * end up with a race condition. - * - * @example - * ```js - * await i18n.withLocale("pt", () => { - * console.log(i18n.t("hello")); - * }); - * ``` - * - * @param {string} locale The temporary locale that will be set during the - * function's execution. - * - * @param {Function} callback The function that will be executed with a - * temporary locale set. - * - * @returns {void} - */ + * Executes function with given locale set. The locale will be changed only + * during the `callback`'s execution, switching back to the previous value + * once it finishes (with or without errors). + * + * This is an asynchronous call, which means you must use `await` or you may + * end up with a race condition. + * + * @example + * ```js + * await i18n.withLocale("pt", () => { + * console.log(i18n.t("hello")); + * }); + * ``` + * + * @param {string} locale The temporary locale that will be set during the + * function's execution. + * + * @param {Function} callback The function that will be executed with a + * temporary locale set. + * + * @returns {void} + */ public async withLocale(locale: string, callback: () => void): Promise { const originalLocale = this.locale; @@ -1217,20 +1217,20 @@ export class I18n { } /** - * Formats time according to the directives in the given format string. - * The directives begins with a percent (`%`) character. Any text not listed - * as a directive will be passed through to the output string. - * - * @see strftime - * - * @param {Date} date The date that will be formatted. - * - * @param {string} format The formatting string. - * - * @param {StrftimeOptions} options The formatting options. - * - * @returns {string} The formatted date. - */ + * Formats time according to the directives in the given format string. + * The directives begins with a percent (`%`) character. Any text not listed + * as a directive will be passed through to the output string. + * + * @see strftime + * + * @param {Date} date The date that will be formatted. + * + * @param {string} format The formatting string. + * + * @param {StrftimeOptions} options The formatting options. + * + * @returns {string} The formatted date. + */ public strftime( date: Date, format: string, @@ -1247,37 +1247,37 @@ export class I18n { } /** - * You may want to update a part of your translations. This is a public - * interface for doing it so. - * - * If the provided path exists, it'll be replaced. Otherwise, a new node will - * be created. When running in strict mode, paths that doesn't already exist - * will raise an exception. - * - * Strict mode will also raise an exception if the override type differs from - * previous node type. - * - * @example - * ```js - * i18n.update("en.number.format", {unit: "%n %u"}); - * i18n.update("en.number.format", {unit: "%n %u"}, true); - * ``` - * - * @param {string} path The path that's going to be updated. It must - * include the language, as in `en.messages`. - * - * @param {Dict} override The new translation node. - * - * @param {boolean} options Set options. - * - * @param {boolean} options.strict Raise an exception if path doesn't already - * exist, or if previous node's type differs from new node's type. - * - * @returns {void} - */ + * You may want to update a part of your translations. This is a public + * interface for doing it so. + * + * If the provided path exists, it'll be replaced. Otherwise, a new node will + * be created. When running in strict mode, paths that doesn't already exist + * will raise an exception. + * + * Strict mode will also raise an exception if the override type differs from + * previous node type. + * + * @example + * ```js + * i18n.update("en.number.format", {unit: "%n %u"}); + * i18n.update("en.number.format", {unit: "%n %u"}, true); + * ``` + * + * @param {string} path The path that's going to be updated. It must + * include the language, as in `en.messages`. + * + * @param {Dict} override The new translation node. + * + * @param {boolean} options Set options. + * + * @param {boolean} options.strict Raise an exception if path doesn't already + * exist, or if previous node's type differs from new node's type. + * + * @returns {void} + */ public update( path: string, - // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any override: any, options: { strict: boolean } = { strict: false }, ): void { @@ -1321,30 +1321,30 @@ export class I18n { } /** - * Converts the array to a comma-separated sentence where the last element is - * joined by the connector word. - * - * @example - * ```js - * i18n.toSentence(["apple", "banana", "pineapple"]); - * //=> apple, banana, and pineapple. - * ``` - * - * @param {any[]} items The list of items that will be joined. - * - * @param {ToSentenceOptions} options The options. - * - * @param {string} options.wordsConnector The sign or word used to join the - * elements in arrays with two or more elements (default: ", "). - * - * @param {string} options.twoWordsConnector The sign or word used to join the - * elements in arrays with two elements (default: " and "). - * - * @param {string} options.lastWordConnector The sign or word used to join the - * last element in arrays with three or more elements (default: ", and "). - * - * @returns {string} The joined string. - */ + * Converts the array to a comma-separated sentence where the last element is + * joined by the connector word. + * + * @example + * ```js + * i18n.toSentence(["apple", "banana", "pineapple"]); + * //=> apple, banana, and pineapple. + * ``` + * + * @param {any[]} items The list of items that will be joined. + * + * @param {ToSentenceOptions} options The options. + * + * @param {string} options.wordsConnector The sign or word used to join the + * elements in arrays with two or more elements (default: ", "). + * + * @param {string} options.twoWordsConnector The sign or word used to join the + * elements in arrays with two elements (default: " and "). + * + * @param {string} options.lastWordConnector The sign or word used to join the + * last element in arrays with three or more elements (default: ", and "). + * + * @returns {string} The joined string. + */ public toSentence( // eslint-disable-next-line @typescript-eslint/no-explicit-any items: any[], @@ -1382,22 +1382,22 @@ export class I18n { } /** - * Reports the approximate distance in time between two time representations. - * - * @param {DateTime} fromTime The initial time. - * - * @param {DateTime} toTime The ending time. Defaults to `Date.now()`. - * - * @param {TimeAgoInWordsOptions} options The options. - * - * @param {boolean} options.includeSeconds Pass `{includeSeconds: true}` if - * you want more detailed approximations when distance < 1 min, 29 secs. - * - * @param {Scope} options.scope With the scope option, you can define a custom - * scope to look up the translation. - * - * @returns {string} The distance in time representation. - */ + * Reports the approximate distance in time between two time representations. + * + * @param {DateTime} fromTime The initial time. + * + * @param {DateTime} toTime The ending time. Defaults to `Date.now()`. + * + * @param {TimeAgoInWordsOptions} options The options. + * + * @param {boolean} options.includeSeconds Pass `{includeSeconds: true}` if + * you want more detailed approximations when distance < 1 min, 29 secs. + * + * @param {Scope} options.scope With the scope option, you can define a custom + * scope to look up the translation. + * + * @returns {string} The distance in time representation. + */ public timeAgoInWords( fromTime: DateTime, toTime: DateTime, @@ -1407,15 +1407,15 @@ export class I18n { } /** - * Add a callback that will be executed whenever locale/defaultLocale changes, - * or `I18n#store` / `I18n#update` is called. - * - * @param {OnChangeHandler} callback The callback that will be executed. - * - * @returns {Function} Return a function that can be used to unsubscribe the - * event handler. - * - */ + * Add a callback that will be executed whenever locale/defaultLocale changes, + * or `I18n#store` / `I18n#update` is called. + * + * @param {OnChangeHandler} callback The callback that will be executed. + * + * @returns {Function} Return a function that can be used to unsubscribe the + * event handler. + * + */ public onChange(callback: OnChangeHandler): () => void { this.onChangeHandlers.push(callback); @@ -1425,41 +1425,41 @@ export class I18n { } /** - * Formats a number. - * - * @param {Numeric} input The numeric value that will be - * formatted. - * @param {FormatNumberOptions} options The formatting options. - * @return {string} The formatted number. - */ + * Formats a number. + * + * @param {Numeric} input The numeric value that will be + * formatted. + * @param {FormatNumberOptions} options The formatting options. + * @return {string} The formatted number. + */ public formatNumber(input: Numeric, options: FormatNumberOptions): string { return formatNumber(input, options); } /** - * @param {Scope} scope The scope lookup path. - * - * @returns {any} The found scope. - */ + * @param {Scope} scope The scope lookup path. + * + * @returns {any} The found scope. + */ // eslint-disable-next-line @typescript-eslint/no-explicit-any public get(scope: Scope): any { return lookup(this, scope); } /** - * @private - * - * @returns {void} - */ + * @private + * + * @returns {void} + */ private runCallbacks(): void { this.onChangeHandlers.forEach((callback) => callback(this)); } /** - * @private - * - * @returns {void} - */ + * @private + * + * @returns {void} + */ private hasChanged(): void { this._version += 1; diff --git a/setup/dashboard/ws/src/libs/i18n/helpers/expandRoundMode.ts b/setup/dashboard/ws/src/libs/i18n/helpers/expandRoundMode.ts index 2868436d..ccfb8e81 100755 --- a/setup/dashboard/ws/src/libs/i18n/helpers/expandRoundMode.ts +++ b/setup/dashboard/ws/src/libs/i18n/helpers/expandRoundMode.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/prefer-literal-enum-member */ import BigNumber from "bignumber.js"; import { RoundingMode } from "../typing"; diff --git a/setup/dashboard/ws/src/libs/i18n/typing.ts b/setup/dashboard/ws/src/libs/i18n/typing.ts index f666edf5..fe722526 100755 --- a/setup/dashboard/ws/src/libs/i18n/typing.ts +++ b/setup/dashboard/ws/src/libs/i18n/typing.ts @@ -4,10 +4,8 @@ import { I18n } from "./I18n"; export type MakePlural = (count: number, ordinal?: boolean) => string; -export interface Dict { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - [key: string]: any; -} +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type Dict = Record; export type DateTime = string | number | Date; @@ -67,9 +65,7 @@ FormatNumberOptions, "format" | "negativeFormat" | "raise" >; -export interface NumberToHumanUnits { - [key: string]: string; -} +export type NumberToHumanUnits = Record; export type NumberToHumanOptions = Omit< FormatNumberOptions, diff --git a/setup/dashboard/ws/src/utils/vnstat.ts b/setup/dashboard/ws/src/utils/vnstat.ts index f7994e5e..d342fc12 100644 --- a/setup/dashboard/ws/src/utils/vnstat.ts +++ b/setup/dashboard/ws/src/utils/vnstat.ts @@ -96,6 +96,7 @@ function execAsync(cmd: string): Promise { /** * Get vnstat data. */ +// eslint-disable-next-line complexity export async function getVnstatData(iface: string): Promise { const ret = { hour: [] as ParsedTrafficEntry[], diff --git a/setup/dashboard/ws/src/widgets/disk_data.tsx b/setup/dashboard/ws/src/widgets/disk_data.tsx index f89baa06..1a847692 100644 --- a/setup/dashboard/ws/src/widgets/disk_data.tsx +++ b/setup/dashboard/ws/src/widgets/disk_data.tsx @@ -45,6 +45,7 @@ async function exists(path: string) { try { await fs.access(path, fs.constants.F_OK); return true; + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (err) { return false; } diff --git a/setup/dashboard/ws/src/widgets/net_status.ts b/setup/dashboard/ws/src/widgets/net_status.ts index b8362d8c..8d34702d 100644 --- a/setup/dashboard/ws/src/widgets/net_status.ts +++ b/setup/dashboard/ws/src/widgets/net_status.ts @@ -11,7 +11,7 @@ async function enuminterface() { export const netStatus = async () => { const interfaces = await enuminterface(); - const ret: {[key: string]: {rx_bytes: number; tx_bytes: number}} = {}; + const ret: Record = {}; for(const iface of interfaces) { const stats = await si.networkStats(iface); if (stats.length > 0) {